(没有版本信息可用,可能只存在于 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"}');
?>