(无版本信息可用,可能只在 Git 中)
CollectionModify::arrayInsert — 将元素插入数组字段
$collection_field
, string $expression_or_literal
): mysql_xdevapi\CollectionModify将元素添加到文档的字段中,因为字段的多个元素表示为数组。与 mysql_xdevapi\CollectionModify::arrayAppend() 不同,此方法允许通过定义新元素之后的项目来指定新元素插入的位置,而 mysql_xdevapi\CollectionModify::arrayAppend() 始终将新元素追加到数组的末尾。
collection_field
标识将在其后插入新元素的数组中的项目。此参数的格式为 FIELD_NAME[ INDEX ]
,其中 FIELD_NAME 是要添加元素的文档字段的名称,而 INDEX 是字段中元素的索引。
索引字段从零开始,因此数组的第一个项目索引为 0。
expression_or_literal
要插入到 FIELD_NAME[ INDEX ] 之后的新的元素。
一个 CollectionModify 对象,可用于执行命令或添加其他操作
示例 #1 mysql_xdevapi\CollectionModify::arrayInsert() 示例
<?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");
$collection = $schema->createCollection("people");
$result = $collection
->add(
'{"name": "Bernie",
"traits": ["Friend", "Brother", "Human"]}')
->execute();
$collection
->modify("name in ('Bernie', 'Jane')")
->arrayInsert('traits[1]', 'Happy')
->execute();
$result = $collection
->find()
->execute();
print_r($result->fetchAll());
?>
上面的示例将输出类似于以下内容
Array ( [0] => Array ( [_id] => 00005b6b5361000000000000010d [name] => Bernie [traits] => Array ( [0] => Friend [1] => Happy [2] => Brother [3] => Human ) ) )