【MongoDB】Object.bsonsize()でドキュメントの実際のBSONサイズを取得する方法
MongoDBでドキュメントの実際のサイズ(BSONサイズ)を確認したい場合は、Object.bsonsize() メソッドを使用できます。このメソッドは、指定したドキュメントのBSONサイズをバイト単位で返します。
BSON(Binary JSON)は、MongoDBが内部でデータを格納する際に使用するバイナリ形式です。mongoshで find() を実行して目視で確認するだけでは正確なサイズはわからないため、厳密なバイト数を知りたいときにこのメソッドが役立ちます。特に、1ドキュメントあたり16MBという上限サイズに近い大きなドキュメントを扱う場合には重要です。
サンプルコレクションの作成
まず、ドキュメントを含むコレクションを作成しましょう。ここでは「demo477」というコレクションに3件のドキュメントを挿入します。
> db.demo477.insertOne({"ClientId":1,"ClientName":"Chris"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e82015fb0f3fa88e227908f")
}
> db.demo477.insertOne({"ClientId":2,"ClientName":"David"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e820167b0f3fa88e2279090")
}
> db.demo477.insertOne({"ClientId":3,"ClientName":"Bob"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e82016db0f3fa88e2279091")
}
挿入したドキュメントの確認
find() メソッドを使って、コレクション内のすべてのドキュメントを表示します。
> db.demo477.find();
これにより、次のような出力が得られます。
{ "_id" : ObjectId("5e82015fb0f3fa88e227908f"), "ClientId" : 1, "ClientName" : "Chris" }
{ "_id" : ObjectId("5e820167b0f3fa88e2279090"), "ClientId" : 2, "ClientName" : "David" }
{ "_id" : ObjectId("5e82016db0f3fa88e2279091"), "ClientId" : 3, "ClientName" : "Bob" }
ドキュメントのBSONサイズをバイト単位で取得する
ドキュメントのBSONサイズを取得するには、findOne() の結果を Object.bsonsize() に渡します。以下がそのクエリです。
> Object.bsonsize(db.demo477.findOne())
実行すると、次のような結果が出力されます。
62
この例では、最初のドキュメントのBSONサイズが62バイトであることがわかります。
補足:bsonsize() を活用するポイント
- 任意のオブジェクトに対応:
findOne()の結果だけでなく、JavaScriptオブジェクトであれば何でも渡せるため、挿入前にドキュメントのサイズを事前チェックすることも可能です。 - 16MB制限の監視に有効: MongoDBのドキュメントには16MBのサイズ上限があるため、大きな配列や埋め込みドキュメントを扱うアプリケーションでは、サイズ管理のためにこのメソッドを活用すると安心です。
- コレクション全体の調査も可能:
forEach()と組み合わせれば、コレクション内の全ドキュメントの合計サイズや最大サイズを一括で調べることもできます。
-
【MongoDB】ネストされた(入れ子構造の)ドキュメントを更新するクエリの書き方
MongoDBでは、入れ子(ネスト)になったサブドキュメントのフィールドを更新する際、update()メソッドとドット表記(dot notation)を組み合わせて使用します。ドット表記を使うことで、深い階層にあるフィールドを直接指定して値を変更できます。1. サンプルコレクションの作成まず、ネストされたドキュメントを含むコレクションを作成しましょう。以下のコマンドでdemo607というコレクションにドキュメントを挿入します。> db.demo607.insertOne( ... { ... id: 1, ... Info1 : { ...
-
MongoDBのドキュメントの最大サイズはどれくらい?16MB制限の基本を解説
MongoDBのドキュメントとはMongoDBにおける「ドキュメント」とは、コレクション内に格納される1件のレコードのことです。ドキュメントはJSONに似たBSON形式で表現され、波括弧({})で囲まれたデータ構造を持ちます。重要なポイントとして、各ドキュメントには16MBというサイズ上限が設けられています。この制限を超えるサイズのドキュメントを挿入しようとすると、エラーが発生します。なお、画像や動画などの大きなバイナリデータを扱いたい場合は、GridFSという仕組みを利用することで、16MBを超えるデータも保存可能です。ドキュメントを含むコレクションを作成するそれでは、実際にinsertOn