MongoCollection::batchInsert
(PECL mongo >=0.9.0)
MongoCollection::batchInsert — Insère plusieurs documents dans la collection
Description
Liste de paramètres
-
a -
Un tableau de tableaux.
-
options -
Options d'insertion.
-
"safe"
Peut être un booléen ou un entier, et vaut par défaut
FALSE. Si vautFALSE, le programme continue l'exécution sans attendre la réponse de la base de données. Si vautTRUE, le programme attendra la réponse de la base de données et lancera une exception MongoCursorException si l'insertion a échouée.Si safe est un entier, l'insertion sera répliquée sur l'ensemble des machines avant de retourner le succès de l'opération (ou lancera une exception si la réplication échoue). Cette valeur écrase la variable w définie sur la collection.
-
"fsync"
Booléen et vaut par défaut
FALSE. Force l'insertion à être synchronisée sur le disque avant de retourner le succès de l'opération. Si vautTRUE, une insertion sécurisée sera effectuée et le paramétrage de safe sera automatiquement valorisé àFALSE. -
"continueOnError"
Booléen, par défaut,
FALSE. Si défini, la base de données n'arrêtera pas une insertion bulk si une d'entre elles échoue (i.e. en raison d'un ID dupliqué). Ceci rend les insertions bulk comme une succession d'insertion simple, sauf que lors d'un appel à la méthode MongoDB::lastError(), un jeu d'erreurs sera retourné lors de l'échec d'une insertion, et pas seulement la dernière. Si plusieurs erreurs surviennent, seule la plus récente sera rapportée par la méthode MongoDB::lastError().
-
Valeurs de retour
Si l'option "safe" est définie, retourne un tableau associatif
contenant le statut de l'insertion ("ok") ainsi que toutes les erreurs survenues ("err").
Sinon, retourne TRUE si l'insertion a été envoyée avec succès, FALSE sinon.
Erreurs / Exceptions
Lance une exception MongoCursorException si l'option "safe" est définie et que l'insertion échoue.
Lance une exception MongoCursorTimeoutException si l'option "safe" est définie à une valeur supérieure à 1 et la base de données ne peut répliquer l'opération dans un délai de MongoCollection::$wtimeout millisecondes.
Historique
| Version | Description |
|---|---|
| 1.0.5 | Ajout du paramètre "options". |
| 1.0.9 | Ajout de la possibilité de passer des entiers à l'option "safe" (auparavant, seuls les booléens étaient acceptés) et ajout de l'option "fsync". |
| 1.2.7 | Le drapeau continueOnError a été ajouté. |
Exemples
Exemple #1 Exemple avec MongoCollection::batchInsert()
L'insertion en masse est un moyen rapide d'insérer rapidement de nombreux éléments à la fois dans une base
<?php
$users = array();
for ($i = 0; $i<100; $i++) {
$users[] = array('username' => 'user'.$i, 'i' => $i);
}
$mongo = new Mongo();
$collection = $mongo->my_db->users;
$collection->drop();
$collection->batchInsert($users);
foreach ($users as $user) {
echo $user['_id']."\n"; // peuplé via l'instance de MongoId
}
$users = $collection->find()->sort(array('i' => 1));
foreach ($users as $user) {
var_dump($user['username']);
}
?>
L'exemple ci-dessus va afficher quelque chose de similaire à :
4bf43ac68ead0e1971000000 4bf43ac68ead0e1971010000 4bf43ac68ead0e1971020000 ... string(5) "user1" string(5) "user2" string(5) "user3" ...
Exemple #2 Exemple avec MongoCollection::batchInsert() où l'on ignore les erreurs
<?php
$con = new Mongo;
$db = $con->demo;
$doc1 = array(
'_id' => new MongoId('4cb4ab6d7addf98506010001'),
'id' => 1,
'desc' => "ONE",
);
$doc2 = array(
'_id' => new MongoId('4cb4ab6d7addf98506010002'),
'id' => 2,
'desc' => "TWO",
);
$doc3 = array(
'_id' => new MongoId('4cb4ab6d7addf98506010002'), // _id identique au précédent
'id' => 3,
'desc' => "THREE",
);
$doc4 = array(
'_id' => new MongoId('4cb4ab6d7addf98506010004'),
'id' => 4,
'desc' => "FOUR",
);
$c = $db->selectCollection('c');
$c->batchInsert(
array($doc1, $doc2, $doc3, $doc4),
array('continueOnError' => true)
);
$docs = $c->find();
foreach ($docs as $doc) {
var_dump($doc['desc']);
}
?>
L'exemple ci-dessus va afficher quelque chose de similaire à :
string(3) "ONE" string(3) "TWO" string(4) "FOUR"
Voir aussi
- MongoCollection::insert() - Insère un tableau dans la collection
- MongoCollection::update() - Modifie les enregistrements
- MongoCollection::find() - Interroge une collection, et retourne comme jeu de résultats un objet MongoCursor
- MongoCollection::remove() - Supprime un enregistrement d'une collection
- Documentation interne MongoDB sur » insert.
