(沒有版本資訊,可能只存在於 Git 中)
Collection::addOrReplaceOne — 新增或取代集合文件
新增文件,如果文件已存在則取代它。
以下是這個方法的幾種情境:
如果 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"}');
?>