mongo の奇妙な動作に遭遇したので、少し説明したいと思います...
私の要求は単純です: コレクション内の単一ドキュメントのサイズを取得したいと思います。私は2つの可能な解決策を見つけました:
- Object.bsonsize - サイズをバイト単位で返す JavaScript メソッド
- db.collection.stats() - データの「集約された」(平均) サイズ ビューを生成する行「avgObjSize」があります。1 つのドキュメントの平均サイズを表すだけです。
ドキュメントを 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