問題描述
獲取查詢中所有文檔的大小 (Get the size of all the documents in a query)
有沒有辦法在 MongoDB shell 中獲取滿足特定查詢的所有文檔的大小?
我正在創建一個將使用 mongodump
的工具(使用 query
選項查看 here)在外部媒體設備上轉儲特定數據。但是,我想在開始轉儲之前查看所有文檔是否都適合外部媒體設備。這就是為什麼我想獲取所有滿足查詢的文檔的大小。
我知道 Object.bsonsize
方法描述了 $bsonSize
returns the size in bytes of a given document when encoded as BSON.
Thus, in order to sum the bson size of all documents matching your query:
// { d: [1, 2, 3, 4, 5] }
// { a: 1, b: "hello" }
// { c: 1000, a: "world" }
db.collection.aggregate([
{ $group: {
_id: null,
size: { $sum: { $bsonSize: "$$ROOT" } }
}}
])
// { "_id" : null, "size" : 177 }
This $group
s all matching items together and $sum
s grouped documents' $bsonSize
.
$$ROOT
represents the current document from which we get the bsonsize.
(by GammaOmega、GammaOmega、Xavier Guihot)