Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

db.コレクション.insert()(mongoshメソッド)

重要

非推奨の mongosh メソッド

このメソッドは mongoshでは非推奨です。 別のメソッドについては、「レガシーmongo shellとの互換性の変更 」を参照してください。

db.collection.insert()

ドキュメントをコレクションに挿入します。

次の値を返します。
  • 単一の挿入操作に対する WriteResult オブジェクト。

  • 一括挿入用のBulkWriteResultオブジェクト。

db.collection.insert() の構文は次のとおりです。

db.collection.insert(
<document or array of documents>,
{
writeConcern: <document>,
ordered: <boolean>
}
)
Parameter
タイプ
説明

document

ドキュメントまたは配列

コレクションに挿入するドキュメントまたはドキュメントの配列。

writeConcern

ドキュメント

任意。 書込み保証 (write concern)を表現するドキュメント。省略すると、デフォルトの書込み保証 (write concern)が使用されます。 詳しくは、 書込み保証(write concern) を参照してください。

トランザクションで実行される場合、操作の書込み保証 (write concern)を明示的に設定しないでください。トランザクションで書込み保証を使用するには、「トランザクション書込み保証」を参照してください。

ordered

ブール値

任意。true に設定されている場合、配列内のドキュメントを順序付きで挿入します。いずれかのドキュメントでエラーが発生した場合、MongoDB は配列内の残りのドキュメントを処理せず、元に戻ります。

false に設定されている場合、順序なし挿入を実行します。いずれかのドキュメントでエラーが発生した場合は、配列内の残りのドキュメントの処理を続行します。

デフォルトは true です。

insert() メソッドでは、デフォルトの書込み保証 (write concern)を使用する insert コマンドを使用します。デフォルト以外の書込み保証を指定するには、オプション パラメーターに書込み保証を含めます。

コレクションが存在しない場合、insert() によってコレクションが作成されます。

挿入するドキュメントに _id フィールドが指定されていない場合、mongod によって _id フィールドが追加され、ドキュメントに一意の ObjectId() が割り当てられます。ほとんどのドライバーでは ObjectId が作成され、 _id フィールドが挿入されますが、ドライバーやアプリケーションでこの処理が行われない場合は、 mongod_id の作成と入力が行われます。

ドキュメントに _id フィールドが含まれる場合に重複キー エラーを回避するには、_id 値がコレクション内で一意になるようにする必要があります。

insert()分散トランザクション内で使用できます。

重要

ほとんどの場合、分散トランザクションでは 1 つのドキュメントの書き込み (write) よりもパフォーマンス コストが高くなります。分散トランザクションの可用性は、効果的なスキーマ設計の代わりにはなりません。多くのシナリオにおいて、非正規化されたデータモデル(埋め込みドキュメントと配列)が引き続きデータやユースケースに最適です。つまり、多くのシナリオにおいて、データを適切にモデリングすることで、分散トランザクションの必要性を最小限に抑えることができます。

トランザクションの使用に関するその他の考慮事項(ランタイム制限や oplog サイズ制限など)については、「本番環境での考慮事項」も参照してください。

トランザクションがクロスシャード間書込みトランザクション(write transaction)でない場合に、分散トランザクション内にコレクションとインデックスを作成できます。

トランザクションにないコレクションに挿入を指定すると、MongoDB は暗黙的にコレクションを作成します。

トランザクションで実行される場合、操作の書込み保証 (write concern)を明示的に設定しないでください。トランザクションで書込み保証を使用するには、「トランザクション書込み保証」を参照してください。

insert() 操作によりドキュメントが正常に挿入されると、その操作によって oplog(操作ログ)にエントリが追加されます。操作が失敗した場合、その操作によって oplog にエントリが追加されることはありません。

このページの例では、sample_mflixサンプルデータセットのデータを使用します。このデータセットを自己管理型MongoDB配置にロードする方法の詳細については、サンプルデータセットをロードする を参照してください。サンプルデータベースに変更を加えた場合、このページの例を実行するには、データベースを削除して再作成する必要がある場合があります。

次の例では、_idフィールドのないドキュメントを moviesコレクションに挿入します。

db.movies.insert( { title: "Inception", year: 2010, genres: [ "Action", "Sci-Fi" ] } )
{
acknowledged: true,
insertedIds: { '0': "..." }
}

挿入されたドキュメントに が含まれていないため、_id mongod_idObjectId() フィールドを作成して追加し、それに一意の 値を割り当てます。

ObjectId 値は、操作が実行されるマシンと時間に固有であるため、実際の値は例の値と異なる可能性があります。

次の例では、 moviesコレクションに挿入されたドキュメントの _idフィールドを指定します。コレクション内では重複キー エラーを回避するために、_id の値は一意である必要があります。

db.movies.insert( { _id: 10, title: "Inception", year: 2010 } )
{
acknowledged: true,
insertedIds: { '0': 10 }
}

次の例では、ドキュメントの配列をinsert() に渡すことで一括挿入を実行しています。デフォルトでは MongoDB は順序付き挿入を実行します。順序付き挿入で、いずれかのドキュメントの挿入中にエラーが発生した場合、 MongoDB は配列内の残りのドキュメントを処理せず、エラーを返します。

最初のドキュメントは_id フィールドを指定しています。 2 番目と 3 番目のドキュメントには_id フィールドが含まれていないため、挿入中にmongod _idはそれらのドキュメントに フィールドを作成し、追加します。

db.movies.insert(
[
{ _id: 11, title: "Inception", year: 2010, genres: [ "Action", "Sci-Fi" ] },
{ title: "The Matrix", year: 1999 },
{ title: "Interstellar", year: 2014 }
]
)
{
acknowledged: true,
insertedIds: {
'0': 11,
'1': "...",
'2': "..."
}
}

次の例では、3 つのドキュメントを順序なしで挿入しています。順序なし挿入で、いずれかのドキュメントの挿入中にエラーが発生した場合、MongoDB は配列内の残りのドキュメントの挿入を続行します。

db.movies.insert(
[
{ _id: 20, title: "2001: A Space Odyssey", year: 1968 },
{ _id: 21, title: "A Clockwork Orange", year: 1971 },
{ _id: 22, title: "The Shining", year: 1980 }
],
{ ordered: false }
)

次のレプリカセットに対する操作では、w: 2書込み保証 (write concern)を指定し、タイムアウトを wtimeout で5000 ミリ秒に設定しています。この操作は、書き込み (write) がプライマリと1つのセカンダリの両方に伝達された後に返すか、5 秒後にタイムアウトします。

db.movies.insert(
{ title: "The Revenant", year: 2015 },
{ writeConcern: { w: 2, j: true, wtimeout: 5000 } }
)

単一のドキュメントが渡された場合、insert()WriteResult() オブジェクトを返します。

成功すると、返された WriteResult オブジェクトには、挿入されたドキュメントの数に関する情報が含まれます。

WriteResult({ "nInserted" : 1 })

insert() に書込み保証 (write concern) エラーが発生した場合、結果には WriteResult.writeConcernError フィールドが含まれます。

WriteResult({
"nInserted" : 1,
"writeConcernError"({
"code" : 64,
"errmsg" : "waiting for replication timed out",
"errInfo" : {
"wtimeout" : true,
"writeConcern" : {
"w" : "majority",
"wtimeout" : 100,
"provenance" : "getLastErrorDefaults"
}
}
})

insert() に書込み保証以外のエラーが発生した場合、結果には WriteResult.writeError フィールドが含まれます。

WriteResult({
"nInserted" : 0,
"writeError" : {
"code" : 11000,
"errmsg" : "insertDocument :: caused by :: 11000 E11000 duplicate key error index: test.foo.$_id_ dup key: { : 1.0 }"
}
})

ドキュメントの配列が渡されると、insert()BulkWriteResult() オブジェクトを返します。

戻る

db.collection.ideIndex

項目一覧