webentwicklung-frage-antwort-db.com.de

Fügen Sie ein Array von Objekten in MongoDB ein

Ich frage mich, wie ich ein Array von Objekten in die "Root-Level-Dokumente" der Mongo-Sammlung mit eigenen vordefinierten _ID-Werten einfügen könnte.

Ich habe db.MyCollection.insert(array); ausprobiert, erstellt jedoch verschachtelte Dokumente unter einer einzigen generierten _id in 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

Was ich möchte

 enter image description here

13
justdiehard

db.collection.insertMany () ist das, was Sie brauchen (von 3.2 unterstützt):

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

ausgabe:

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

Warum nicht durch die Array-Objekte iterieren und sie einzeln einfügen?

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

Gehen Sie diesen Link durch, um das genaue Ergebnis so zu erhalten, wie Sie es möchten:

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

1
Shantanu Madane

Sie können MongoDB Bulk verwenden, um mehrere Dokumente in einem einzigen Aufruf der Datenbank einzufügen.

Durchlaufen Sie zunächst Ihr Array und rufen Sie die bulk-Methode für jedes Element auf:

bulk.insert(item)

Rufen Sie nach der Schleife execute auf:

bulk.execute()

Sehen Sie sich die referierte Dokumentation an, um mehr zu erfahren.