web-dev-qa-db-fra.com

Insérer un tableau d'objets dans MongoDB

Je me demande comment je pourrais insérer un tableau d'objets dans la collection Mongo "Documents de niveau racine" avec ses propres valeurs _id prédéfinies.

J'ai essayé db.MyCollection.insert(array); mais cela crée des documents imbriqués sous un seul id généré dans MongoDB. 

var array = [

      { _id: 'rg8nsoqsxhpNYho2N',
        goals: 0,
        assists: 1,
        total: 1                  },


      { _id: 'yKMx6sHQboL5m8Lqx',
        goals: 0,
        assists: 1,
        total: 1                  }];

db.MyCollection.insert (array);

 enter image description here

Ce que je veux

 enter image description here

13
justdiehard

db.collection.insertMany () est ce dont vous avez besoin (pris en charge à partir de 3.2):

db.users.insertMany(
   [
     { name: "bob", age: 42, status: "A", },
     { name: "ahn", age: 22, status: "A", },
     { name: "xi", age: 34, status: "D", }
   ]
)

sortie:

{
    "acknowledged" : true,
    "insertedIds" : [ 
        ObjectId("57d6c1d02e9af409e0553dff"), 
        ObjectId("57d6c1d02323d119e0b3c0e8"), 
        ObjectId("57d6c1d22323d119e0b3c16c")
    ]
}
4
marmor

Pourquoi ne pas parcourir les objets du tableau et les insérer un à la fois?

array.forEach((item) => db.MyCollection.insert(item));
3
Ikechi Michael

Passez par ce lien pour obtenir le résultat exact comme vous le souhaitez:

https://docs.mongodb.org/manual/tutorial/insert-documents/#insert-a-document

1
Shantanu Madane

Vous pouvez utiliser MongoDB Bulk pour insérer plusieurs documents en un seul appel à la base de données.

Commencez par parcourir votre tableau et appelez la méthode bulk pour chaque élément:

bulk.insert(item)

Après la boucle, appelez execute:

bulk.execute()

Jetez un coup d'œil à la documentation référencée pour en savoir plus.