Mongo.bulkWrite()
定義
bulkWrite()
は、1 回の呼び出しで複数のデータベースとコレクションにわたる複数の書込み操作を実行します。このメソッドは、1 回の呼び出しで特定のコレクションへの複数の書き込み操作を実行する db.collection.bulkWrite()
を置き換えます。
注意
Mongo.bulkWrite()
はMongoDB 8.0 以降でのみ使用できます。
構文
次の構文を使用して、現在の Mongo()
インスタンスで bulkWrite()
を呼び出すことができます。
db.getMongo().bulkWrite( [ { namespace: "<db1.collection1>", name: "insertOne", document: { ... } }, { namespace: "<db2.collection2>", name: "replaceOne", filter: { ... } } ], { ordered: boolean, verboseResults: boolean, bypassDocumentValidation: boolean, let: Document } )
次の例のように、別の Mongo
インスタンスで呼び出すこともできます。
const otherMongo = Mongo("<other connection string>"); otherMongo.bulkWrite([{ namespace: "<db.collection>", ... }]);
bulkWrite()
は、次の 2 つのパラメータを受け入れます。
Parameter | タイプ | 説明 |
---|---|---|
| ドキュメントの配列 | の書込み (write) 操作の配列を定義します。配列内の各ドキュメントは、実行する書込み操作を表します。 |
| ドキュメント | 操作のオプションを定義します。 |
operations
のドキュメントは、次の 6 つの操作のいずれかを表すことができます。
1 つを挿入
1 つを置き換え
更新 1
多数更新
deleteOne
deleteMany
以下のセクションでは、各操作を表すドキュメントに使用する必要がある構文について説明します。
1 つを挿入
{ namespace: '<db.collection>', name: 'insertOne', document: Document }
フィールド | タイプ | 説明 |
---|---|---|
| 文字列 | ドキュメントを挿入するデータベースとコレクション。 |
| 文字列 | 操作。挿入 1操作の場合は |
| ドキュメント | 挿入するドキュメント。 |
注意
挿入するドキュメントに _id
フィールドを指定しない場合、mongosh
は _id
を自動的に生成します。
1 つまたは複数の更新
{ namespace: '<db>.<collection>', name: 'updateOne' | 'updateMany', filter: Document, update: Document | Document[], arrayFilters?: Document[], hint?: Document | string, collation?: Document, upsert?: boolean }
フィールド | タイプ | 説明 |
---|---|---|
| 文字列 | ドキュメントを更新するデータベースとコレクション。 |
| 文字列 | 操作。更新 1操作の場合は |
| ドキュメント | アップデートする 1 つ以上のドキュメントに一致するフィルター。アップデートの 1 つの操作中に、 |
| ドキュメント | 実行される更新。 |
| ドキュメントの配列 | (任意)配列値フィールドをアップデートする場合、 |
| ドキュメントまたは文字列 | (任意)操作に使用するインデックス。 |
| ドキュメント | |
| ブール値 | フィルター に一致するドキュメントがない場合にMongoDB が新しいドキュメントを作成するかどうかを指定します。デフォルトは |
replaceOne
{ namespace: '<db>.<collection>', name: 'replaceOne', filter: Document, replacement: Document, hint?: Document | string, collation?: Document }
フィールド | タイプ | 説明 |
---|---|---|
| 文字列 | ドキュメントを置き換えるデータベースとコレクション。 |
| 文字列 | 操作。 1 つの置き換え操作では |
| ドキュメント | アップデートするドキュメントに一致するフィルター。 1 つの置換操作中、 |
| ドキュメント | 置換ドキュメントです。 |
| ドキュメントまたは文字列 | (任意)操作に使用するインデックス。 |
| ドキュメント |
1 つまたは複数を削除
{ namespace: '<db>.<collection>', name: 'deleteOne' | 'deleteMany', filter: Document, hint?: Document | string, collation?: Document }
フィールド | タイプ | 説明 |
---|---|---|
| 文字列 | ドキュメントを削除するデータベースとコレクション。 |
| 文字列 | 操作。 1 つの削除操作の場合は |
| ドキュメント | 削除するドキュメントに一致するフィルター。 1 つの削除操作中に、 |
| ドキュメントまたは文字列 | (任意)操作に使用するインデックス。 |
| ドキュメント |
オプション
bulkWrite()
では次のオプションを使用できます。使用するオプションを含むドキュメントを bulkWrite()
に渡すことができます。このドキュメントは任意です。
{ ordered?: boolean, verboseResults?: boolean, bypassDocumentValidation?: boolean, let?: Document }
フィールド | タイプ | 説明 |
---|---|---|
| ブール値 | (任意) MongoDB が指定したドキュメントの順序で一括書き込みを実行することを示します。デフォルトは |
| ブール値 | (任意) |
| ブール値 | (任意) 書込み (write)操作がドキュメント検証ルールをバイパスするかどうかを指定します。デフォルトは |
| ドキュメント | (任意)集計変数を使用してアクセスできるパラメーター名と値のドキュメント。 |
出力
bulkWrite()
は、次のフィールドを持つオブジェクトを返します。
{ acknowledged: boolean, insertedCount: int, matchedCount: int, modifiedCount: int, deletedCount: int, upsertedCount: int, insertResults?: map(int, document), updateResults?: map(int, document), deleteResults?: map(int, document) }
フィールド | タイプ | 説明 |
---|---|---|
| ブール値 |
|
| integer | 挿入されたドキュメントの数。 |
| integer | フィルターに一致したドキュメントの数。 |
| integer | 変更されたドキュメントの数。 |
| integer | 削除されたドキュメントの数。 |
| integer | アップサートされたドキュメントの数。 |
| ドキュメントへの整数のマップ | 任意。成功した各 挿入操作の結果を表します。各操作は整数キーで表されます。このキーには、操作に対応する情報を含むドキュメントが含まれます。ドキュメントには、次のフィールドが含まれています。
|
| ドキュメントへの整数のマップ | 任意。成功した各 更新操作の結果を表します。各操作は整数キーで表されます。このキーには、操作に対応する情報を含むドキュメントが含まれます。ドキュメントには、次のフィールドが含まれています。
|
| ドキュメントへの整数のマップ | 任意。成功した各削除操作の結果を表します。各操作は整数キーで表されます。このキーには、操作に対応する情報を含むドキュメントが含まれます。ドキュメントには、次のフィールドが含まれています。
|
例
この mongosh
コマンドは、次の操作を順番に実行します。
は、
db.authors
コレクションにドキュメントを挿入しますは、
db.books
コレクションにドキュメントを挿入します前のドキュメントを更新します
db.getMongo().bulkWrite( [ { namespace: 'db.authors', name: 'insertOne', document: { name: 'Stephen King' } }, { namespace: 'db.books', name: 'insertOne', document: { name: 'It' } }, { namespace: 'db.books', name: 'updateOne', filter: { name: 'it' }, update: { $set: { year: 1986 } } } ], { ordered: true, bypassDocumentValidation: true } )
mongosh
は一括書込み (write) を順番に実行し、次のドキュメントを返します。
{ acknowledged: true, insertedCount: 2, matchedCount: 1, modifiedCount: 1, deletedCount: 0, upsertedCount: 0, insertResults: { '1': { insertedId: ObjectId('67ed8ce8efd926c84cab7945') }, '2': { insertedId: ObjectId('67ed8ce8efd926c84cab7946') } } updateResults: { '1': { matchedCount: 1, modifiedCount: 1, didUpsert: false } } }