AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

MongoDB\Collection::findOneAndUpdate()

MongoDB\Collection::findOneAndUpdate()

クエリに一致する単一のドキュメントを検索し、更新します。

function findOneAndUpdate(
array|object $filter,
array|object $update,
array $options = []
): object|null
$filter : array|object
更新するドキュメントを指定するフィルター条件。
$update : array|object
更新するフィールドと値の組み合わせと、関連する更新演算子を指定します。$update は MongoDB の更新演算子を使用します。このパラメーターとして集計パイプラインを渡すこともできます。
$options : 配列

必要なオプションを指定する配列。

名前
タイプ
説明

bypassDocumentValidation

ブール値

trueの場合、書込み操作によってドキュメント レベルの検証を回避できます。 デフォルトはfalseです。

arrayFilters

配列

配列フィールドの更新操作でどの配列要素を変更するかを決定するフィルタードキュメントの配列。

バージョン1.3の新機能。

collation

array|object

Collation allows users to specify language-specific rules for string comparison, such as rules for lettercase and accent marks. When specifying collation, the locale field is mandatory; all other collation fields are optional. For descriptions of the fields, see Collation Document.

照合が指定されていないが、コレクションにデフォルトの照合がある場合、操作はコレクションに指定された照合を使用します。 コレクションにも操作にも照合が指定されていない場合、MongoDB では以前のバージョンで使用されていた単純なバイナリ比較によって string が比較されます。

comment

混合

データベースプロファイラcurrentOp出力、およびログから操作を追跡するのに役立つ任意のコメントを指定できるようにします。

このオプションは MongoDB 4.4 以降で使用可能であり、古いサーバー バージョンで指定すると実行時に例外が発生します。

バージョン1.13の新機能。

hint

string|array|object

使用するインデックス。 インデックス名を string またはインデックス キー パターンをドキュメントとして指定します。 指定すると、クエリ システムはヒント指定したインデックスを使用するプランのみを考慮します。

このオプションは MongoDB 4.4 以降で使用可能であり、古いサーバー バージョンで指定すると実行時に例外が発生します。

バージョン1.7の新機能。

maxTimeMS

integer

カーソルに対する情報処理操作の累積時間制限(ミリ秒単位)。MongoDB は、割り込みポイントの後の最も早く操作を中止します。

let

array|object

パラメーター名と値のマップ。 値は、ドキュメント フィールドを参照しない定数または閉じた式である必要があります。 その後、パラメーターには 集計式コンテキスト で変数としてアクセスできます(例: $$var )。

これは 5.0 より前のサーバー バージョンではサポートされていないため、使用された場合は実行時に例外が発生します。

バージョン1.13の新機能。

プロジェクション

array|object

返される文書に含めるフィールドを決定するためのプロジェクション仕様。 MongoDB マニュアルの「 クエリ 演算子および プロジェクション 演算子 から返されるプロジェクト フィールド 」を 参照してください。

returnDocument

integer

アップデートを適用する前にドキュメントを返すか、アップデートを適用した後にドキュメントを返すかを指定します。 returnDocumentは次の値をサポートしています。

  • MongoDB\Operation\FindOneAndUpdate::RETURN_DOCUMENT_BEFOREデフォルト

  • MongoDB\Operation\FindOneAndUpdate::RETURN_DOCUMENT_AFTER

セッション

操作に関連付けるクライアント セッション。

バージョン1.3の新機能。

sort

array|object

結果の順序の並び替え指定。

typeMap

配列

The type map to apply to cursors, which determines how BSON documents are converted to PHP values. Defaults to the collection's type map.

これは返された結果ドキュメントに使用されます。

upsert

ブール値

trueに設定すると、クエリ条件に一致するドキュメントがない場合に新しいドキュメントが作成されます。 デフォルト値はfalseで、一致するものが見つからない場合は新しいドキュメントを挿入しません。

writeConcern

操作に使用する書込み保証 ( write concern )。 コレクションの書込み保証 (write concern) のデフォルトです。

トランザクションの一部である個々の操作に対して書込み保証 (write concern)を指定することはできません。代わりに、トランザクションを開始するときにwriteConcern オプションを設定します。

returnDocumentオプションの指定値に応じて、元のドキュメントまたは更新されたドキュメントの配列またはオブジェクト。 デフォルトでは、元のドキュメントが返されます。 クエリに一致するドキュメントがない場合、 nullが返されます。 戻り値の型は、 typeMapオプションによって異なります。

MongoDB\Exception\UnexpectedValueException サーバーからのコマンド応答が不正な形式であった場合、。

MongoDB\Exception\UnsupportedExceptionオプションが使用され、選択したサーバーでサポートされていない場合(例: collationreadConcernwriteConcern )。

MongoDB\Exception\InvalidArgumentException は、パラメータまたはオプションの解析に関連するエラーの場合は です。

MongoDB$Driver\Exception\RuntimeException は、拡張レベルの他のエラーの場合(例:)。

When evaluating query criteria, MongoDB compares types and values according to its own comparison rules for BSON types, which differs from PHP's comparison and type juggling rules. When matching a special BSON type the query criteria should use the respective BSON class in the extension (e.g. use MongoDB\BSON\ObjectId to match an ObjectId).

次の操作では、ビルド番号を"761"に設定して、 testデータベース内のrestaurantsコレクション内の"40361708"restaurant_idを持つレストランを更新します。

<?php
$collection = (new MongoDB\Client)->test->restaurants;
$updatedRestaurant = $collection->findOneAndUpdate(
[ 'restaurant_id' => '40361708' ],
[ '$set' => [ 'address.building' => '761' ]],
[
'projection' => [ 'address' => 1 ],
'returnDocument' => MongoDB\Operation\FindOneAndUpdate::RETURN_DOCUMENT_AFTER,
]
);
var_dump($updatedRestaurant);

出力は次のようになります。

object(MongoDB\Model\BSONDocument)#20 (1) {
["storage":"ArrayObject":private]=>
array(2) {
["_id"]=>
object(MongoDB\BSON\ObjectId)#12 (1) {
["oid"]=>
string(24) "594d5ef280a846852a4b3dee"
}
["address"]=>
object(MongoDB\Model\BSONDocument)#19 (1) {
["storage":"ArrayObject":private]=>
array(4) {
["building"]=>
string(3) "761"
["coord"]=>
object(MongoDB\Model\BSONArray)#18 (1) {
["storage":"ArrayObject":private]=>
array(2) {
[0]=>
float(-73.9925306)
[1]=>
float(40.7309346)
}
}
["street"]=>
string(8) "Broadway"
["zipcode"]=>
string(5) "10003"
}
}
}
}