PHP Conference Japan 2024

Collection::add

(无版本信息可用,可能仅在 Git 中)

Collection::add添加集合文档

描述

public mysql_xdevapi\Collection::add(混合 $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
6 年前
似乎(至少在 MySQL 5.7.23 中)如果不在要“添加”的项目数组中设置 _id 字段,则会失败并出现错误…

[HY000] 文档缺少必需字段

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