(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"}');
?>