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

# Collection::addOrReplaceOne

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

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

### 説明

public function 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"}');

    ?>

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open