我想知道是否可以根据以字节/kb度量的文档大小对MongoDB集合进行排序。我一直在查看db.collection.stats(),但是这只给了我有关集合的信息,而不是文档。
发布于 2015-05-07 17:43:53
一个可能的解决方案是在文档中添加一个额外的“大小”字段,因为文档大小不会经常更改。
若要为每个文档添加大小:
db.collection.find().forEach(function(doc) {
doc.size = Object.bsonsize(doc);
db.collection.save(doc);
});
按降序排序:
db.collection.find().sort({"size":-1});
另一种解决方案是加载内存中的所有文档,用任何编程语言(js、php、java.)对结果进行排序和打印,如果您的集合很大,则不建议这样做。
发布于 2021-03-05 09:15:21
从MONGO4.4中,操作符$bsonSize
返回给定文档的字节大小。
找到最大的文件
db.collection.aggregate([
{ $group: {
_id: null,
max: { $max: { $bsonSize: "$$ROOT" } }
}}
])
https://stackoverflow.com/questions/30113487
复制