Docs Menu
Docs Home
/ / /
Node.js
/ /

複合演算子

項目一覧

  • Overview
  • 組み込みメソッド

ほとんどのデータベースリクエストでは、データベースからデータを読み取るか、データベースにデータを書き込みます。 ただし、データの読み取りと書き込みを 1 回の操作で必要とする場合もあります。

複合操作は、読み取り操作と書込み (write) 操作を 1 つのアトミックなステートメントで結合するため、読み取りとその後の書込み (write) の間にデータが変更される可能性はありません。

各操作を個別に実行すると、別のリクエストによって読み取り操作と書込み操作の間にデータが変更される可能性があります。 これらのデータ変更は操作の成功を妨げるものではありませんが、エラー処理がより困難になる可能性があります。 アプリケーションが プロセスのいずれかの段階で潜在的なエラーを処理する必要がある場合、脆弱になり、テストが困難になります。

Node.js ドライバーは、複合操作を実行するための次のメソッドを提供します。

これらのメソッドは、構成可能な並べ替えプロジェクションオプションを持つ任意の optionsオブジェクトを受け入れます。

これらの各メソッドの戻り値の型を指定するために、 includeResultMetadataオプションを設定することもできます。 このオプションの詳細については、このガイドの「 includeResultMetadata オプション」セクションを参照してください。

findOneAndUpdate()メソッドとfindOneAndDelete()メソッドはreturnDocument設定を受け取ります。これは、変更されたドキュメントの更新前バージョンまたは更新後のバージョンがメソッドで返されるか、更新後のバージョンが返されるかを指定します。

includeResultMetadataオプションによって、複合メソッドの戻り値の型が決まります。

この設定のデフォルトはtrueです。つまり、各メソッドは、見つかったドキュメントと追加のメタデータを含むModifyResultタイプを返します。 includeResultMetadatafalseに設定すると、メソッドは一致したドキュメントを返します。 一致するドキュメントがない場合、各メソッドはnullを返します。

コレクションに次のドキュメントのみが含まれているとします。

{ _id: 1, x: "on" }

次の表は、 includeResultMetadataオプションの値によってfindOneAndDelete()メソッドの戻り値の型がどのように変化するかを示しています。

オプションの値
構文と出力
デフォルト: true
await coll.findOneAndDelete({ x: "on" });
false

一致したドキュメント

await coll.findOneAndDelete({ x: "on" }, { includeResultMetadata: false });

一致するドキュメントはありません

await coll.findOneAndDelete({ x: "off" }, { includeResultMetadata: false });

戻る

クエリを指定する