Docs Menu
Docs Home
/ /
CRUD 操作

一括操作

このガイドでは、 Node.jsドライバーを使用して 一括操作 を実行する方法を学習できます。一括操作は、サーバーへの呼び出しの回数を減らすのに役立ちます。各操作のリクエストを送信する代わりに、1 つのアクション内で複数の操作を実行できます。

Tip

一括操作の詳細については、 MongoDB Serverマニュアルの「 一括書込み 」を参照してください。

このガイドには、次のセクションが含まれています。

  • 一括挿入操作 では、コレクションまたはクライアントに対して 一括挿入操作 を実行する方法について説明します。

  • 一括置換操作 では、コレクションまたはクライアントに対して一括置換操作を実行する方法について説明します。

  • 一括更新操作 では、コレクションまたはクライアントに対して一括更新操作を実行する方法について説明します。

  • 一括削除操作 では、コレクションまたはクライアントに対して一括削除操作を実行する方法について説明します。

  • 戻り値の型 は、一括書き込み操作の結果として返されるオブジェクトを記述します。

  • 例外の処理 では、一括書込み操作のいずれかの操作が失敗した場合に発生する例外について説明します。

  • 追加情報では、このガイドで言及されている型とメソッドのリソースとAPIドキュメントへのリンクを提供します。

重要

サーバーとドライバーのバージョンの要件

コレクション レベルの一括書き込み操作には、次のバージョンが必要です。

  • MongoDB Serverバージョン 3.2 以降

  • Node.jsドライバー バージョン 3.6 以降

このガイドの例では、Atlasサンプルデータセットに含まれる データベース内のmovies usersコレクションとsample_mflix コレクションを使用します。 MongoDB Atlasクラスターを無料で作成して、サンプルデータセットをロードする方法については、 「Atlas を使い始める」ガイド を参照してください。

一括挿入操作を実行するには、挿入するドキュメントごとに 一括操作モデル を作成します。次に、これらのモデルのリストを bulkWrite() メソッドに渡します。

コレクションに対して 一括挿入操作 を実行するには、 各操作に対して InsertOneModel を作成します。次に、コレクションで bulkWrite() メソッドを呼び出し、モデルの配列をパラメーターとして渡します。InsertOneModel を作成するには、モデルの documentフィールドを指定し、挿入するドキュメントに設定します。

この例では、次のアクションを実行します。

  1. 配列内の 2 つの InsertOneModel インスタンスを指定します。各 InsertOneModel は、sample_mflixデータベース内の moviesコレクションに挿入するドキュメントを表します。

  2. moviesコレクションで bulkWrite() メソッドを呼び出し、モデルの配列をパラメーターとして渡します。

  3. 挿入されたドキュメントの数を出力します。

一括置換操作を実行するには、置き換えるドキュメントごとに 一括操作モデル を作成します。次に、これらのモデルのリストを bulkWrite() メソッドに渡します。

コレクションに対して 一括置換操作を実行するには、 各操作に対して ReplaceOneModel を作成します。次に、コレクションで bulkWrite() メソッドを呼び出し、モデルの配列をパラメーターとして渡します。

次の表では、ReplaceOneModel で設定できるフィールドについて説明しています。

フィールド
説明

filter

The filter that matches the document you want to replace.
Type: Document

replacement

The replacement document.
Type: Document

collation

(Optional) The collation to use when sorting results. To learn more about collations, see the Collations guide.
Type: String or Object

hint

(Optional) The index to use for the operation. To learn more about indexes, see the Indexes on Collections guide.
Type: Bson

upsert

(Optional) Whether a new document is created if no document matches the filter.
By default, this field is set to false.
Type: Boolean

この例では、次のアクションを実行します。

  1. 配列内の 2 つの ReplaceOneModel インスタンスを指定します。 ReplaceOneModel インスタンスには、moviesコレクション内の映画を表すドキュメントを置き換えるための指示が含まれています。

  2. moviesコレクションで bulkWrite() メソッドを呼び出し、モデルの配列をパラメーターとして渡します。

  3. 変更されたドキュメントの数を出力します。

一括更新操作を実行するには、実行する更新ごとに 一括操作モデル を作成します。次に、これらのモデルのリストを bulkWrite() メソッドに渡します。

コレクションに対して 一括更新操作 を実行するには、 各操作に対して UpdateOneModel または UpdateManyModel を作成します。次に、コレクションで bulkWrite() メソッドを呼び出し、モデルの配列をパラメーターとして渡します。UpdateOneModel はフィルターに一致するドキュメントを1 つだけ更新し、UpdateManyModel はフィルターに一致するすべてのドキュメントを更新します。

次の表では、UpdateOneModel または UpdateManyModel で設定できるフィールドについて説明しています。

フィールド
説明

filter

The filter that matches one or more documents you want to update. When specified in an UpdateOneModel, only the first matching document will be updated. When specified in an UpdateManyModel, all matching documents will be updated.
Type: Document

update

The update to perform.
Type: Document

arrayFilters

(Optional) A set of filters specifying which array elements an update applies to if you are updating an array-valued field.
Type: Array

collation

(Optional) The collation to use when sorting results. To learn more about collations, see the Collations guide.
Type: Object

hint

(Optional) The index to use for the operation. To learn more about indexes, see the Indexes on Collections guide.
Type: String or Object

upsert

(Optional) Whether a new document is created if no document matches the filter. By default, this field is set to false.
Type: Boolean

この例では、次のアクションを実行します。

  1. 配列で UpdateOneModel インスタンスと UpdateManyModelインスタンスを指定します。 これらのモデルには、 moviesコレクション内の映画を表すドキュメントを更新するための指示が含まれています。

  2. moviesコレクションで bulkWrite() メソッドを呼び出し、モデルの配列をパラメーターとして渡します。

  3. 変更されたドキュメントの数を出力します。

一括削除操作を実行するには、削除操作ごとに 一括操作モデル を作成します。次に、これらのモデルのリストを bulkWrite() メソッドに渡します。

コレクションに対して一括削除操作を実行するには、 各操作に対して DeleteOneModel または DeleteManyModel を作成します。次に、コレクションで bulkWrite() メソッドを呼び出し、モデルの配列をパラメーターとして渡します。DeleteOneModel はフィルターに一致するドキュメントを1 つだけ削除し、DeleteManyModel はフィルターに一致するすべてのドキュメントを削除します。

次の表では、DeleteOneModel または DeleteManyModel で設定できるフィールドについて説明しています。

フィールド
説明

filter

The filter that matches one or more documents you want to delete. When specified in a DeleteOneModel, only the first matching document will be deleted. When specified in a DeleteManyModel, all matching documents will be deleted.
Type: Document

collation

(Optional) The collation to use when sorting results. To learn more about collations, see the Collations guide.
Type: Object

hint

(Optional) The index to use for the operation. To learn more about indexes, see the Indexes on Collections guide.
Type: String or Object

この例では、次のアクションを実行します。

  1. 配列で DeleteOneModel インスタンスと DeleteManyModelインスタンスを指定します。これらのモデルには、moviesコレクション内のドキュメントを削除するための手順が含まれています。

  2. moviesコレクションで bulkWrite() メソッドを呼び出し、モデルの配列をパラメーターとして渡します。

  3. 削除されたドキュメントの数を出力します。

Collection.bulkWrite() メソッドは BulkWriteResultオブジェクトを返します。これは 一括操作に関する情報を提供します。

次の表は、BulkWriteResultオブジェクトのフィールドを説明します。

フィールド
説明

insertedCount

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

matchedCount

一致したドキュメントの数

modifiedCount

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

upsertedCount

アップサートされた文書の数

deletedCount

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

コレクションで呼び出された一括書き込み操作が失敗した場合、ordered オプションが true に設定されている場合、 Node.jsドライバーは MongoBulkWriteError をスローし、それ以上の操作を実行しません。orderedfalse に設定されている場合、後続の操作への続行が試行されます。

Tip

順序付き一括操作と順序なし一括操作の詳細については、 MongoDB Serverマニュアルの 一括書込みガイドの「 順序付き操作と順序なし操作 」セクションを参照してください。

MongoBulkWriteErrorオブジェクトには次のプロパティが含まれています。

プロパティ
説明

message

The error message.
Type: String

writeErrors

An array of errors that occurred during the bulk write operation.
Type: BulkWriteError[]

writeConcernErrors

Write concern errors that occurred during execution of the bulk write operation.
Type: WriteConnectionError[]

result

The results of any successful operations performed before the exception was thrown.
Type: BulkWriteResult[]

err

The underlying error object, which may contain more details.
Type: Error

一括操作の詳細については、 MongoDB Serverマニュアルの「 一括書込み 」を参照してください。

このガイドで説明したメソッドや型の詳細については、次の API ドキュメントを参照してください。

戻る

Delete Documents

項目一覧