Collection::add

(没有版本信息可用,可能只在 Git 中)

Collection::add添加集合文档

描述

public mysql_xdevapi\Collection::add(mixed $document): mysql_xdevapi\CollectionAdd

触发将给定文档插入到集合中,并支持此方法的多种变体。选项包括

  1. 将单个文档添加为 JSON 字符串。

  2. 将单个文档添加为数组,如下所示:[ 'field' => 'value', 'field2' => 'value2' ... ]

  3. 两种方法的混合,并且可以在同一个操作中添加多个文档。

参数

document

一个或多个文档,可以是 JSON 或者一个包含字段及其关联值的数组。这不能是一个空数组。

MySQL 服务器会自动为每个文档生成唯一的 _id 值(推荐),但也可以手动添加。该值必须是唯一的,否则添加操作将失败。

返回值

一个 CollectionAdd 对象。使用 execute() 返回一个 Result,它可用于查询受影响项的数量、操作生成的警告数量,或获取插入文档的生成 ID 列表。

示例

示例 #1 mysql_xdevapi\Collection::add() 示例

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

// 添加两个文档
$collection->add('{"name": "Fred", "age": 21, "job": "Construction"}')->execute();
$collection->add('{"name": "Wilma", "age": 23, "job": "Teacher"}')->execute();

// 使用单个 JSON 对象添加两个文档
$result = $collection->add(
'{"name": "Bernie",
"jobs": [{"title":"Cat Herder","Salary":42000}, {"title":"Father","Salary":0}],
"hobbies": ["Sports","Making cupcakes"]}'
,
'{"name": "Jane",
"jobs": [{"title":"Scientist","Salary":18000}, {"title":"Mother","Salary":0}],
"hobbies": ["Walking","Making pies"]}'
)->execute();

// 从上次 add() 获取生成 ID 列表
$ids = $result->getGeneratedIds();
print_r($ids);
?>

上面的示例将输出类似于以下内容

Array
(
    [0] => 00005b6b53610000000000000056
    [1] => 00005b6b53610000000000000057
)

注意

注意:

MySQL 服务器 8.0 或更高版本会生成唯一的 _id,如示例所示。如果使用 MySQL 服务器 5.7,则必须手动定义 _id 字段。

添加备注

用户贡献的备注 2 备注

cyork at echodreamz dot com
5 年前
似乎(至少在 MySQL 5.7.23 中)如果您没有在要“添加”的项目数组中设置 _id 字段,它会因错误而失败...

[HY000] 文档缺少必需的字段

添加 "_id" => xxxx 可以解决问题。
jcastro at eftec dot cl
6 年前
它返回 mysql_xdevapi\CollectionAdd 而不是 mysql_xdevapi\Result
To Top