Collection::add

(No version information available, might only be in Git)

Collection::addFügt einer Sammlung Dokumente hinzu

Beschreibung

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

Fügt die angegebenen Dokumente zu einer Sammlung hinzu, wobei diese Methode mehrere Varianten unterstützt. Zu den Möglichkeiten gehören:

  1. Hinzufügen eines einzelnen Dokuments als JSON-Zeichenkette.

  2. Hinzufügen eines einzelnen Dokuments als Array: [ 'field' => 'value', 'field2' => 'value2' ... ]

  3. Eine Mischung aus beidem, wobei in einer Operation auch mehrere Dokumente hinzugefügt werden können.

Parameter-Liste

document

Ein oder mehrere Dokumente, wobei es sich entweder um JSON oder ein Array von Feldern mit den zugehörigen Werten handeln kann. Das Array darf nicht leer sein.

Der MySQL-Server erzeugt für jedes Dokument automatisch einen eindeutigen _id-Wert (empfohlen), der jedoch auch manuell hinzugefügt werden kann. Dieser Wert darf noch nicht vorhanden sein, weil der Vorgang sonst fehlschlägt.

Rückgabewerte

Gibt ein CollectionAdd-Objekt zurück. Mittels execute() wird ein Ergebnis zurückgegeben, das verwendet werden kann, um die Anzahl der betroffenen Elemente abzufragen, die Anzahl der durch den Vorgang erzeugten Warnungen zu ermitteln oder eine Liste der erzeugten IDs für die eingefügten Dokumente zu erhalten.

Beispiele

Beispiel #1 mysql_xdevapi\Collection::add()-Beispiel

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

// Hinzufügen zweier Dokumente
$collection->add('{"name": "Fred", "age": 21, "job": "Construction"}')->execute();
$collection->add('{"name": "Wilma", "age": 23, "job": "Teacher"}')->execute();

// Hinzufügen zweier Dokumente mit einem einzigen JSON-Objekt
$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();

// Abrufen einer Liste der beim letzten add() erzeugten IDs
$ids = $result->getGeneratedIds();
print_r($ids);
?>

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

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

Anmerkungen

Hinweis:

Wie im Beispiel gezeigt, wird ab MySQL-Server 8.0 eine eindeutige _id erzeugt. Wenn MySQL 5.7 verwendet wird, muss das Feld _id manuell definiert werden.

add a note

User Contributed Notes 2 notes

up
2
cyork at echodreamz dot com
6 years ago
Seems that (at least with MySQL 5.7.23) if you do not set an _id field in the array of items to "add", it fails with error...

[HY000] Document is missing a required field

Adding "_id" => xxxx does resolve the issue.
up
-1
jcastro at eftec dot cl
6 years ago
It returns a mysql_xdevapi\CollectionAdd instead of a mysql_xdevapi\Result
To Top