Collection::addOrReplaceOne
(No version information available, might only be in Git)
Collection::addOrReplaceOne — コレクションのドキュメントを追加または置換する
説明
新しいドキュメントを追加するか、既に存在する場合は置換します。
このメソッドには、複数のシナリオがあります:
-
_id やユニークキーの値がコレクション中のどのドキュメントとも衝突する場合、 ドキュメントは追加されます。
-
id がどのドキュメントともマッチしないものの、 ひとつ以上のユニークキーの値がコレクション中のドキュメントと衝突する場合、 エラーが発生します。
-
id が既に存在するドキュメントにマッチし、ユニークキーもコレクションに定義されていない場合、 ドキュメントは置き換えられます。
-
id が既に存在するドキュメントにマッチする場合、 または 同じドキュメントの全てのユニークキーのうちいずれかとマッチし id がコレクション中のドキュメントと衝突しない場合、 そのドキュメントは置き換えられます。
-
id が既に存在するドキュメントとマッチし、 ひとつ以上のユニークキーが異なるドキュメントにマッチする場合、 エラーが発生します。
パラメータ
id
-
フィルタid。この id または、 ユニークインデックスを持つ他のフィールドが既にコレクションに存在している場合は、 それにマッチするドキュメントを更新します。
デフォルトでは、この id はレコードが追加された時に自動的に MySQL サーバーが生成します。 そして、フィールド名 '_id' で参照されます。
doc
-
追加または置き換えるドキュメント。JSON文字列です。
戻り値
Result オブジェクト
例
例1 mysql_xdevapi\Collection::addOrReplaceOne() の例
<?php
$session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
$session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
$session->sql("CREATE DATABASE addressbook")->execute();
$schema = $session->getSchema("addressbook");
$create = $schema->createCollection("people");
$collection = $schema->getCollection("people");
// add() を使う場合
$result = $collection->add('{"name": "Wilma", "age": 23, "job": "Teacher"}')->execute();
// addOrReplaceOne() を使う場合
// 注意: ここでは、既知の _id 値を渡しています
$result = $collection->addOrReplaceOne('00005b6b53610000000000000056', '{"name": "Fred", "age": 21, "job": "Construction"}');
?>