Docs Menu
Docs Home
/
データベース マニュアル
/ / /

Mongo.bulkWrite()

Mongo.bulkWrite(operations, options)

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
タイプ
説明

operations

ドキュメントの配列

の書込み (write) 操作の配列を定義します。配列内の各ドキュメントは、実行する書込み操作を表します。

options

ドキュメント

操作のオプションを定義します。

operations のドキュメントは、次の 6 つの操作のいずれかを表すことができます。

  • 1 つを挿入

  • 1 つを置き換え

  • 更新 1

  • 多数更新

  • deleteOne

  • deleteMany

以下のセクションでは、各操作を表すドキュメントに使用する必要がある構文について説明します。

{
namespace: '<db.collection>',
name: 'insertOne',
document: Document
}
フィールド
タイプ
説明

namespace

文字列

ドキュメントを挿入するデータベースとコレクション。

name

文字列

操作。挿入 1操作の場合は "insertOne" に設定します。

document

ドキュメント

挿入するドキュメント。

注意

挿入するドキュメントに _idフィールドを指定しない場合、mongosh_id を自動的に生成します。

{
namespace: '<db>.<collection>',
name: 'updateOne' | 'updateMany',
filter: Document,
update: Document | Document[],
arrayFilters?: Document[],
hint?: Document | string,
collation?: Document,
upsert?: boolean
}
フィールド
タイプ
説明

namespace

文字列

ドキュメントを更新するデータベースとコレクション。

name

文字列

操作。更新 1操作の場合は "updateOne" に設定します。多数の更新操作では、 を "updateMany" に設定します。

filter

ドキュメント

アップデートする 1 つ以上のドキュメントに一致するフィルター。アップデートの 1 つの操作中に、mongosh は最初に一致するドキュメントのみをアップデートします。更新操作中に、mongosh はフィルターに一致するすべてのドキュメントを更新します。

update

ドキュメント

実行される更新。

arrayFilters

ドキュメントの配列

(任意)配列値フィールドをアップデートする場合、arrayFilters はアップデートを適用する配列要素を指定するフィルターのセットです。

hint

ドキュメントまたは文字列

collation

ドキュメント

(任意)結果をソートするときに使用する照合。

upsert

ブール値

フィルター に一致するドキュメントがない場合にMongoDB が新しいドキュメントを作成するかどうかを指定します。デフォルトは false です。

{
namespace: '<db>.<collection>',
name: 'replaceOne',
filter: Document,
replacement: Document,
hint?: Document | string,
collation?: Document
}
フィールド
タイプ
説明

namespace

文字列

ドキュメントを置き換えるデータベースとコレクション。

name

文字列

操作。 1 つの置き換え操作では "replaceOne" に設定します。

filter

ドキュメント

アップデートするドキュメントに一致するフィルター。 1 つの置換操作中、mongosh は最初に一致するドキュメントのみを置換します。

replacement

ドキュメント

置換ドキュメントです。

hint

ドキュメントまたは文字列

collation

ドキュメント

(任意)結果をソートするときに使用する照合。

{
namespace: '<db>.<collection>',
name: 'deleteOne' | 'deleteMany',
filter: Document,
hint?: Document | string,
collation?: Document
}
フィールド
タイプ
説明

namespace

文字列

ドキュメントを削除するデータベースとコレクション。

name

文字列

操作。 1 つの削除操作の場合は "deleteOne" に設定します。多数の削除操作の場合は、"deleteMany" に設定します。

filter

ドキュメント

削除するドキュメントに一致するフィルター。 1 つの削除操作中に、mongosh は最初に一致するドキュメントのみを削除します。多数の削除操作中に、mongosh は一致するドキュメントをすべて削除します。

hint

ドキュメントまたは文字列

collation

ドキュメント

(任意)結果をソートするときに使用する照合。

bulkWrite() では次のオプションを使用できます。使用するオプションを含むドキュメントを bulkWrite() に渡すことができます。このドキュメントは任意です。

{
ordered?: boolean,
verboseResults?: boolean,
bypassDocumentValidation?: boolean,
let?: Document
}
フィールド
タイプ
説明

ordered

ブール値

(任意) MongoDB が指定したドキュメントの順序で一括書き込みを実行することを示します。デフォルトは true です。

verboseResults

ブール値

(任意)bulkWrite() が冗長な結果を出力するかどうかを指定します。デフォルトは false です。

bypassDocumentValidation

ブール値

(任意) 書込み (write)操作がドキュメント検証ルールをバイパスするかどうかを指定します。デフォルトは false です。

let

ドキュメント

(任意)集計変数を使用してアクセスできるパラメーター名と値のドキュメント。

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)
}
フィールド
タイプ
説明

acknowledged

ブール値

true サーバーが確認応答を返す場合は 、それ以外の場合は false

insertedCount

integer

挿入されたドキュメントの数。

matchedCount

integer

フィルターに一致したドキュメントの数。

modifiedCount

integer

変更されたドキュメントの数。

deletedCount

integer

削除されたドキュメントの数。

upsertedCount

integer

アップサートされたドキュメントの数。

insertResults

ドキュメントへの整数のマップ

任意。成功した各 挿入操作の結果を表します。各操作は整数キーで表されます。このキーには、操作に対応する情報を含むドキュメントが含まれます。ドキュメントには、次のフィールドが含まれています。

  • insertedId: オブジェクト ID。挿入されたドキュメントの _id を表します。

updateResults

ドキュメントへの整数のマップ

任意。成功した各 更新操作の結果を表します。各操作は整数キーで表されます。このキーには、操作に対応する情報を含むドキュメントが含まれます。ドキュメントには、次のフィールドが含まれています。

  • matchedCount: 整数。一致したドキュメントの数を表します。

  • modifiedCount: 整数。変更されたドキュメントの数を表します。

  • upsertedId: オブジェクト ID。アップサートされたドキュメントの _id を表します。任意。

  • didUpsert:ブール値。ドキュメントがアップサートされた場合は true、それ以外の場合は false

deleteResults

ドキュメントへの整数のマップ

任意。成功した各削除操作の結果を表します。各操作は整数キーで表されます。このキーには、操作に対応する情報を含むドキュメントが含まれます。ドキュメントには、次のフィールドが含まれています。

  • deletedCount: 整数。削除されたドキュメントの数を表します。

この 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 } }
}

戻る

db.collection.initializeUndefinedBulkOp

項目一覧

  • 定義
  • 構文
  • 1 つを挿入
  • 1 つまたは複数の更新
  • replaceOne
  • 1 つまたは複数を削除
  • オプション
  • 出力