Collection::add

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

Collection::add — Ajoute un document à la collection

Description

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

Déclenche l'insertion du ou des documents donnés dans la collection, et plusieurs variantes de cette méthode sont prises en charge. Les options incluent :

  1. Ajouter un seul document sous forme de chaĂźne JSON.

  2. Ajouter un seul document sous forme de tableau comme : [ 'field' => 'value', 'field2' => 'value2' ... ]

  3. Un mĂ©lange des deux, et plusieurs documents peuvent ĂȘtre ajoutĂ©s dans la mĂȘme opĂ©ration.

Liste de paramĂštres

document

Un ou plusieurs documents, et cela peut ĂȘtre soit du JSON ou un tableau de champs avec leurs valeurs associĂ©es. Cela ne peut pas ĂȘtre un tableau vide.

Le serveur MySQL gĂ©nĂšre automatiquement des valeurs _id uniques pour chaque document (recommandĂ©), bien que cela puisse Ă©galement ĂȘtre ajoutĂ© manuellement. Cette valeur doit ĂȘtre unique, sinon l'opĂ©ration d'ajout Ă©chouera.

Valeurs de retour

Un objet CollectionAdd. Utiliser execute() pour retourner un rĂ©sultat qui peut ĂȘtre utilisĂ© pour interroger le nombre d'Ă©lĂ©ments affectĂ©s, le nombre d'avertissements gĂ©nĂ©rĂ©s par l'opĂ©ration, ou pour rĂ©cupĂ©rer une liste d'identifiants gĂ©nĂ©rĂ©s pour les documents insĂ©rĂ©s.

Exemples

Exemple #1 Exemple de 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");

// Ajoute deux documents
$collection->add('{"name": "Fred", "age": 21, "job": "Construction"}')->execute();
$collection->add('{"name": "Wilma", "age": 23, "job": "Teacher"}')->execute();

// Ajoute deux documents en utilisant un seul objet 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();

// RécupÚre une liste d'identifiants générés à partir du dernier add()
$ids = $result->getGeneratedIds();
print_r($ids);
?>

Résultat de l'exemple ci-dessus est similaire à :

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

Notes

Note:

Un identifiant unique _id est gĂ©nĂ©rĂ© par MySQL Server 8.0 ou supĂ©rieur, comme dĂ©montrĂ© dans l'exemple. Le champ _id doit ĂȘtre dĂ©fini manuellement si on utilise MySQL Server 5.7.

add a note

User Contributed Notes 2 notes

up
2
cyork at echodreamz dot com ¶
7 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 ¶
7 years ago
It returns a mysql_xdevapi\CollectionAdd instead of a mysql_xdevapi\Result