モンゴの奇妙な振る舞いに遭遇したので、それを少し明確にしたいと思います...
私の要求は次のように単純です:コレクション内の単一のドキュメントのサイズを取得したい。私は2つの可能な解決策を見つけました:
- Object.bsonsize-バイト単位でサイズを返す必要があるJavaScriptメソッド
- db.collection.stats()-データに「集約された」(平均)サイズのビューを生成する行「avgObjSize」があります。単に単一のドキュメントの平均サイズを表します。
1つのドキュメントのみでテストコレクションを作成すると、両方の関数が異なる値を返します。どうしてそれは可能ですか?
mongoドキュメントのサイズを取得する他の方法はありますか?
ここでは、テストを実行するコードをいくつか提供します。
新しいデータベース「test」を作成し、type: "auto"という1つの属性のみを持つ単純なドキュメントを入力しました。
db.test.insert({type:"auto"})
stats()関数呼び出しからの出力:db.test.stats():
{ "ns" : "test.test", "count" : 1, "size" : 40, "avgObjSize" : 40, "storageSize" : 4096, "numExtents" : 1, "nindexes" : 1, "lastExtentSize" : 4096, "paddingFactor" : 1, "systemFlags" : 1, "userFlags" : 0, "totalIndexSize" : 8176, "indexSizes" : { "_id_" : 8176 }, "ok" : 1
}
bsonsize関数呼び出しからの出力:Object.bsonsize(db.test.find({test: "auto"}))
481