Collection::addOrReplaceOne

(No version information available, might only be in Git)

Collection::addOrReplaceOneコレクションのドキュメントを追加または置換する

説明

public mysql_xdevapi\Collection::addOrReplaceOne(string $id, string $doc): mysql_xdevapi\Result

新しいドキュメントを追加するか、既に存在する場合は置換します。

このメソッドには、複数のシナリオがあります:

  • _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"}');

?>
関連キーワード:  ドキュメント, コレクション, 追加, 置換, マッチ, Collection, ユニークキー, 存在, xdevapi, addOrReplaceOne