MongoDBでドキュメントのサイズを返す必要がある場合は、次を使用できます。
-
$bsonSize
集約パイプラインオペレーター -
Object.bsonSize()
メソッド
以下は、各アプローチの例です。
サンプルデータ
次の例では、products
というコレクションを使用します 次のドキュメントを使用:
{ "_id" : 1, "product" : { "name" : "Shirt - Short Sleeves", "color" : "White" } } { "_id" : 2, "product" : { "name" : "Cap", "color" : "Green" } } { "_id" : 3, "product" : { "name" : "Travel Pack", "color" : "Light Blue" } }
各製品フィールドに埋め込みドキュメントが含まれていることに注意してください。
ドキュメント全体のサイズ、または埋め込まれたオブジェクトのみのサイズを返すことができます。
$bsonSize
アグリゲーションパイプラインオペレーター
$bsonSize
を使用できます $$ROOT
の演算子 ドキュメント全体のサイズを取得するためのシステム変数。 $$ROOT
変数は、パイプラインによって現在処理されているドキュメントを指します。
例:
db.products.aggregate([
{
$project: {
"rootSize": { $sum: { $bsonSize: "$$ROOT" } }
}
}
])
結果:
{ "_id" : 1, "rootSize" : 81 } { "_id" : 2, "rootSize" : 63 } { "_id" : 3, "rootSize" : 76 }
この場合、コレクション内のすべてのドキュメントのサイズを取得しますが、いつでも1つまたは複数のドキュメントにフィルタリングできます。
埋め込まれたドキュメントのサイズを取得するには、$$ROOT
を置き換えることができます ドキュメントのフィールド名を持つ変数。
例:
db.products.aggregate([
{
$project: {
"documentSize": { $sum: { $bsonSize: "$product" } }
}
}
])
結果:
{ "_id" : 1, "documentSize" : 54 } { "_id" : 2, "documentSize" : 36 } { "_id" : 3, "documentSize" : 49 }
この場合、フィールド名はproduct
です。 したがって、$product
を使用します そのフィールドを参照します。
MongoDB $bsonSize
を参照してください 詳細と例については。
Object.bsonSize()
方法
Object.bsonSize()
メソッドは、ドキュメントのサイズを取得するもう1つの方法です。
例:
Object.bsonsize(
db.products.findOne()
)
結果:
81
このメソッドはサイズだけを返し、それ以上は返しません。
findOne()
を使用したことに注意してください find()
の代わりにメソッド 方法。 find()
のため、これを行いました findOne()
に対して、カーソルのみを返します 実際のドキュメントを返します。
ドット表記を使用して追加することで、埋め込まれたドキュメントのサイズを取得できます:
Object.bsonsize(
db.products.findOne().product
)
結果:
54
_id
を指定することで、次のドキュメントのサイズを取得できます クエリ引数として:
Object.bsonsize(
db.products.findOne({_id:2}).product
)
結果:
36
MongoDB Object.bsonSize()
を参照してください 詳細と例については。