MongoDBはinsert()
を提供します データベースにドキュメントを追加するための方法(および他の2つ)。
MongoDBは、データベースにドキュメントを挿入するための次の3つの方法を提供します。
-
insert()
-
insertOne()
-
insertMany()
insert()
方法
insert()
メソッドは、1つ以上のドキュメントをコレクションに挿入します。各ドキュメントはパラメータとして提供されます。コレクション名はinsert()
の前に付加されます メソッド。
単一のドキュメントを挿入するための構文は次のとおりです。
db.collectionName.insert({ name: "value" })
上記の例では、ドキュメントは{ name: "value" }
で構成されています 。これはJSONドキュメントです。 JSONドキュメントは、中かっこで囲まれた1つ以上の名前と値のペアで構成されます{}
。
MongoDBはJSONドキュメントを使用してデータを保存するため、この形式でドキュメントを挿入します。
以前、データベースを作成したときにこの方法を使用しました。
データベースに別のドキュメントを追加しましょう:
db.artists.insert({ artistname: "Jorn Lande" })
これにより、{ artistname: "Jorn Lande" }
のドキュメントが挿入されます その内容として。
ここで、 Artists を検索すると コレクションには、2つのドキュメント(以前に作成したドキュメントを含む)が表示されます:
> db.artists.find() { "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "artistname" : "The Tea Party" } { "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" }
MongoDBが_id
を作成したことに注意してください ドキュメントのフィールド。指定しない場合は、MongoDBが作成します。ただし、_id
の値を制御したい場合は、挿入を行うときにこのフィールドを指定できます。 フィールド。
db.artists.insert({ _id: 1, artistname: "AC/DC" })
結果:
> db.artists.find() { "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "artistname" : "The Tea Party" } { "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" } { "_id" : 1, "artistname" : "AC/DC" }
_id
MongoDBが提供するのは12バイトのObjectId値です。次の値で構成されています;
- Unixエポックからの秒数を表す4バイトの値
- 3バイトのマシン識別子
- 2バイトのプロセスID、および
- ランダムな値で始まる3バイトのカウンター。
複数のドキュメントを作成する
1つのinsert()
内に複数のドキュメントを挿入できます メソッド。
この例では、次の3つのドキュメントを挿入します。
db.artists.insert( [ { artistname: "The Kooks" }, { artistname: "Bastille" }, { artistname: "Gang of Four" } ] )
ドキュメントは配列として提供されていることに注意してください。ドキュメントは角かっこで囲まれています[]
、およびそれらはコンマで区切られます。
上記のコードを実行すると、次のメッセージが表示されます。
BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 3, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] })
埋め込みドキュメント
ドキュメントには、他のドキュメント、配列、およびドキュメントの配列を含めることができます。
カンマで区切ることにより、ドキュメント内に複数の名前と値のペアを指定することもできます。
db.artists.insert({ artistname : "Deep Purple", albums : [ { album : "Machine Head", year : 1972, genre : "Rock" }, { album : "Stormbringer", year : 1974, genre : "Rock" } ] })
結果:
WriteResult({ "nInserted" : 1 })
パラメータ
insert()
メソッドは次のパラメータを受け入れます。
パラメータ | タイプ | 説明 |
---|---|---|
document | ドキュメントまたはアレイ | コレクションに挿入するドキュメントまたはドキュメントの配列(上記の例のように)。 |
writeConcern | ドキュメント | オプションのパラメーター。これは、書き込みの懸念を表すドキュメントです。書き込みの懸念事項は、スタンドアロンのmongod、レプリカセット、またはシャーディングされたクラスターへの書き込み操作に対してMongoDBから要求される確認応答のレベルを表します。 |
ordered | ブール値 | オプションのパラメーター。値がtrue に設定されている場合 、MongoDBは配列内のドキュメントの順序付けられた挿入を実行し、ドキュメントの1つでエラーが発生した場合、MongoDBは配列内の残りのドキュメントを処理せずに戻ります。
値が |
insertOne()
方法
insertOne()
を使用することもできます 単一のドキュメントをコレクションに挿入する方法:
db.musicians.insertOne({ _id: 1, name: "Ian Gillan", instrument: "Vocals" })
ここでは、存在しないコレクションを指定しました。 insert()
と同様 メソッドの場合、指定されたコレクションがまだ存在しない場合は作成されます。
insert()
を使用した場合とは出力が異なることに気付くでしょう。 方法:
{ "acknowledged" : true, "insertedId" : 1 }
埋め込みドキュメント
insert()
と同様 、埋め込みドキュメントとドキュメントの配列を挿入できます:
db.artists.insertOne({ artistname : "Miles Davis", albums : [ { album : "Kind of Blue", year : 1959, genre : "Jazz" }, { album : "Bitches Brew", year : 1970, genre : "Jazz" } ] })
結果:
{ "acknowledged" : true, "insertedId" : ObjectId("578214f048ef8c6b3ffb0159") }
insertMany()
方法
名前が示すように、insertMany()
を使用できます 複数のドキュメントを挿入するには:
db.musicians.insertMany( [ { _id: 2, name: "Ian Paice", instrument: "Drums", born: 1948 }, { _id: 3, name: "Roger Glover", instrument: "Bass", born: 1945 }, { _id: 4, name: "Steve Morse", instrument: "Guitar", born: 1954 }, { _id: 5, name: "Don Airey", instrument: "Keyboards", born: 1948 }, { _id: 6, name: "Jeff Martin", instrument: "Vocals", born: 1969 }, { _id: 7, name: "Jeff Burrows", instrument: "Drums", born: 1968 }, { _id: 8, name: "Stuart Chatwood", instrument: "Bass", born: 1969 }, ] )
繰り返しますが、insertMany()
を使用した場合の出力 insert()
を使用して複数のドキュメントを挿入した場合とは異なります 方法:
{ "acknowledged" : true, "insertedIds" : [ 2, 3, 4, 5, 6, 7, 8 ] }
埋め込みドキュメント
db.artists.insertMany( [ { artistname : "Robben Ford", albums : [ { album : "Bringing it Back Home", year : 2013, genre : "Blues" }, { album : "Talk to Your Daughter", year : 1988, genre : "Blues" } ] }, { artistname : "Snoop Dogg", albums : [ { album : "Tha Doggfather", year : 1996, genre : "Rap" }, { album : "Reincarnated", year : 2013, genre : "Reggae" } ] } ])
結果:
{ "acknowledged" : true, "insertedIds" : [ ObjectId("578217c248ef8c6b3ffb015a"), ObjectId("578217c248ef8c6b3ffb015b") ] }