MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Insertion MongoDB()

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.