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

MongoDB insertMany()

Dans MongoDB, le db.collection.insertMany() méthode insère plusieurs documents dans une collection.

La collection part est le nom de la collection dans laquelle insérer les documents.

Exemple

Voici un exemple d'utilisation de db.collection.insertMany() pour insérer plusieurs documents dans une collection appelée pets :

db.pets.insertMany([
    { _id: 1, name: "Wag", type: "Dog" },
    { _id: 2, name: "Bark", type: "Dog" },
    { _id: 3, name: "Meow", type: "Cat" }
    ])

Résultat :

{ "acknowledged" : true, "insertedIds" : [ 1, 2, 3 ] } 

Le db.collection.insertMany() méthode renvoie un document contenant :

  • Un booléen acknowledged comme true si l'opération s'est exécutée avec un souci d'écriture ou false si la préoccupation d'écriture était désactivée.
  • Un tableau de _id valeurs pour chaque document inséré avec succès.

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 de documents sans fournir le _id champs.

db.pets.insertMany([
    { name: "Bruce", type: "Bat" },
    { name: "Sweetie", type: "Honey Badger" }
    ])

Résultat :

{
	"acknowledged" : true,
	"insertedIds" : [
		ObjectId("5fe30ef737b49e0faf1af215"),
		ObjectId("5fe30ef737b49e0faf1af216")
	]
}

Le _id les valeurs des documents sont renvoyées. Nous pourrions les utiliser pour rechercher dans la collection uniquement les documents que nous avons insérés.

Mais dans ce cas, regardons toute 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("5fe30ef737b49e0faf1af215"), "name" : "Bruce", "type" : "Bat" }
{ "_id" : ObjectId("5fe30ef737b49e0faf1af216"), "name" : "Sweetie", "type" : "Honey Badger" }

Nous pouvons voir que nos deux nouveaux documents sont inclus dans la collection.

Le ordered Paramètre

Le db.collection.insertMany() 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.insertMany() 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.insertMany() pour plus d'informations.