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()を参照してください 詳細と例については。