MongoDBでは、 db.collection.insert()
メソッドは、1つまたは複数のドキュメントをコレクションに挿入します。
コレクション
partは、ドキュメントを挿入するコレクションの名前です。
例
db.collection.insert()
の使用例を次に示します。 pets
というコレクションに複数のドキュメントを挿入します :
db.pets.insert([
{ _id: 1, name: "Wag", type: "Dog" },
{ _id: 2, name: "Bark", type: "Dog" },
{ _id: 3, name: "Meow", type: "Cat" }
])
結果:
BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 3, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] })
db.collection.insert()
メソッドは、挿入操作のステータスを含むオブジェクトを返します。
返されるオブジェクトは、単一のドキュメントが挿入されたか、複数のドキュメントが挿入されたかによって異なります。
- 単一のドキュメントが挿入されると、
WriteResult
が返されます。 オブジェクト。 - ドキュメントの配列が挿入されると、
BulkWriteResult
が返されます。 オブジェクト。
上記の例がBulkWriteResult
を返したことがわかります 物体。これは、ドキュメントの配列を追加したためです。配列に要素が1つしかない場合でも、これは実行されます。
ここで、 db.collection.find()
を使用すると コレクションを見ると、新しく追加されたドキュメントが表示されます。
db.pets.find()
結果:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" }
この場合、コレクションに含まれるのは3つのドキュメントのみであるため、これらのドキュメントのみが返されました。
ただし、コレクションが大きい場合は、ドキュメントIDを使用して、関心のあるドキュメントのみに結果を絞り込むことができます。
db.pets.find({_id: {$in: [1,2,3]}})
結果:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" }
コレクションが存在しない場合はどうなりますか?
コレクションが存在しない場合は、コレクションが作成され、ドキュメントが追加されます。
コレクションがすでに存在する場合、ドキュメントは単にコレクションに追加されます( _id
が提供されます)。 値は既存の値と競合しません。
この例を作成したとき、コレクションは存在しなかったため、挿入操作で作成されました。
_id
フィールド
_id
fieldは、MongoDBの一意の識別子フィールドです。
前の例で示したように、独自の _id
を指定できます ドキュメントのフィールド。その場合、その値はコレクション内で一意である必要があります。これは、 _id
が原因です フィールドは、ドキュメントの一意の識別子として使用されます。
_id
を指定せずにドキュメントを挿入する例を次に示します。 フィールド。
db.pets.insert(
{ name: "Bruce", type: "Bat" }
)
結果:
WriteResult({ "nInserted" : 1 })
この場合、メソッドは WriteResult
を返すことに注意してください。 BulkWriteResult
の代わりにオブジェクト 物体。これは、単一のドキュメントを挿入したためです(そして、それは配列に含まれていませんでした)。
それでは、コレクションをもう一度見てみましょう。
db.pets.find()
結果:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" } { "_id" : ObjectId("5fe323d837b49e0faf1af218"), "name" : "Bruce", "type" : "Bat" }
新しいドキュメントがコレクションに含まれており、 _id
が含まれていることがわかります。 自動的に生成された値を持つフィールド。
注文コード> パラメータ
db.collection.insert()
メソッドはordered
も受け入れます パラメータ。これは、デフォルト値が true
のブールパラメータです。 。
注文コード> パラメータは、挿入操作を順序付けするか順序付けしないかを指定します。
注文
の場合 false
に設定されています 、ドキュメントは順序付けられていない形式で挿入され、 mongod
によって並べ替えられる場合があります パフォーマンスを向上させるため。
順序付けされた挿入では、ドキュメントの1つの挿入中にエラーが発生した場合、MongoDBは配列内の残りのドキュメントを処理せずにエラーを返します。
順序付けされていない挿入では、ドキュメントの1つを挿入中にエラーが発生した場合、MongoDBは残りのドキュメントを配列に挿入し続けます。
詳細情報
db.collection.insert()
メソッドはwriteConcern
も受け入れます 引数。書き込み操作のためにMongoDBから要求される確認応答のレベルを説明します。
db.collection.insert()
については、MongoDBのドキュメントを参照してください。 詳細については。