Dans MongoDB, le db.collection.insert()
méthode insère un document ou des documents dans une collection.
La collection
part est le nom de la collection dans laquelle insérer le ou les documents.
Exemple
Voici un exemple d'utilisation de db.collection.insert()
pour insérer plusieurs documents dans une collection appelée pets
:
db.pets.insert([
{ _id: 1, name: "Wag", type: "Dog" },
{ _id: 2, name: "Bark", type: "Dog" },
{ _id: 3, name: "Meow", type: "Cat" }
])
Résultat :
BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 3, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] })
Le db.collection.insert()
renvoie un objet qui contient le statut de l'opération d'insertion.
L'objet renvoyé varie selon qu'un seul document a été inséré ou plusieurs documents.
- Lorsqu'un seul document est inséré, il renvoie un
WriteResult
objet. - Lorsqu'un tableau de documents est inséré, il renvoie un
BulkWriteResult
objet.
Nous pouvons voir que l'exemple ci-dessus a renvoyé un BulkWriteResult
objet. C'est parce que nous avons ajouté un tableau de documents. Il l'aurait fait même si le tableau ne contenait qu'un seul élément.
Maintenant, si nous utilisons db.collection.find()
pour regarder la collection, nous verrons les documents nouvellement ajoutés.
db.pets.find()
Résultat :
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" }
Dans ce cas, nos trois documents sont les seuls de la collection, et donc seuls ces documents ont été restitués.
Cependant, si la collection était importante, nous pourrions utiliser les ID de document pour limiter le résultat aux seuls documents qui nous intéressent.
db.pets.find({_id: {$in: [1,2,3]}})
Résultat :
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" }
Et si la collection n'existe pas ?
Si la collection n'existe pas, elle est créée et les documents y sont ajoutés.
Si la collection existe déjà, alors les documents y sont simplement ajoutés (à condition de leur _id
les valeurs ne sont pas en conflit avec celles existantes).
Lorsque j'ai créé cet exemple, la collection n'existait pas et l'opération d'insertion l'a donc créée.
Le _id
Champ
Le _id
field est un champ d'identifiant unique dans MongoDB.
Comme démontré dans l'exemple précédent, vous pouvez fournir votre propre _id
champ dans le document. Si vous le faites, sa valeur doit être unique dans la collection. C'est parce que votre _id
sera utilisé comme identifiant unique du document.
Voici un exemple d'insertion d'un document sans fournir le _id
champs.
db.pets.insert(
{ name: "Bruce", type: "Bat" }
)
Résultat :
WriteResult({ "nInserted" : 1 })
Notez que dans ce cas, la méthode renvoie un WriteResult
objet au lieu d'un BulkWriteResult
objet. C'est parce que nous avons inséré un seul document (et il n'était pas dans un tableau).
Examinons à nouveau la collection.
db.pets.find()
Résultat :
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" } { "_id" : ObjectId("5fe323d837b49e0faf1af218"), "name" : "Bruce", "type" : "Bat" }
Nous pouvons voir que notre nouveau document est inclus dans la collection et qu'il a un _id
champ avec une valeur générée automatiquement.
Le ordered
Paramètre
Le db.collection.insert()
la méthode accepte également un ordered
paramètre. Ceci est un paramètre booléen avec une valeur par défaut de true
.
Le ordered
paramètre spécifie si l'opération d'insertion doit être ordonnée ou non.
Si ordered
est défini sur false
, les documents sont insérés dans un format non ordonné et peuvent être réorganisés par mongod
pour augmenter les performances.
Avec les insertions ordonnées, si une erreur se produit lors de l'insertion d'un des documents, MongoDB retourne sur erreur sans traiter les documents restants du tableau.
Avec des insertions non ordonnées, si une erreur se produit lors de l'insertion d'un des documents, MongoDB continue d'insérer les documents restants dans le tableau.
Plus d'informations
Le db.collection.insert()
la méthode accepte également un writeConcern
argument, qui décrit le niveau d'accusé de réception demandé à MongoDB pour les opérations d'écriture.
Voir la documentation MongoDB pour db.collection.insert()
pour plus d'informations.