sql >> Database >  >> NoSQL >> MongoDB

MongoDB insertMany()

In MongoDB de db.collection.insertMany() methode voegt meerdere documenten in een verzameling in.

De collection deel is de naam van de collectie waarin de documenten moeten worden ingevoegd.

Voorbeeld

Hier is een voorbeeld van het gebruik van db.collection.insertMany() om meerdere documenten in te voegen in een verzameling genaamd pets :

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

Resultaat:

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

De db.collection.insertMany() methode retourneert een document met daarin:

  • Een boolean acknowledged als true als de bewerking werd uitgevoerd met schrijfproblemen of false als schrijfzorg was uitgeschakeld.
  • Een array van _id waarden voor elk succesvol ingevoegd document.

Als we nu db.collection.find() . gebruiken om de collectie te bekijken, zullen we de nieuw toegevoegde documenten zien.

db.pets.find()

Resultaat:

{ "_id" : 1, "name" : "Wag", "type" : "Dog" }
{ "_id" : 2, "name" : "Bark", "type" : "Dog" }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }

In dit geval zijn onze drie documenten de enige in de collectie, en dus zijn alleen deze documenten geretourneerd.

Als de verzameling echter groot was, zouden we de document-ID's kunnen gebruiken om het resultaat te beperken tot alleen de documenten waarin we geïnteresseerd zijn.

db.pets.find({_id: {$in: [1,2,3]}})

Resultaat:

{ "_id" : 1, "name" : "Wag", "type" : "Dog" }
{ "_id" : 2, "name" : "Bark", "type" : "Dog" }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }

Wat als de collectie niet bestaat?

Als de verzameling niet bestaat, wordt deze gemaakt en worden de documenten eraan toegevoegd.

Als de verzameling al bestaat, worden de documenten er gewoon aan toegevoegd (mits hun _id waarden zijn niet in strijd met bestaande).

Toen ik dit voorbeeld maakte, bestond de verzameling niet, en daarom heeft de invoegbewerking deze gemaakt.

De _id Veld

De _id field is een uniek identificatieveld in MongoDB.

Zoals aangetoond in het vorige voorbeeld, kunt u uw eigen _id . opgeven veld in het document. Als je dat doet, moet de waarde ervan uniek zijn binnen de collectie. Dit komt omdat uw _id veld wordt gebruikt als de unieke identificatie van het document.

Hier is een voorbeeld van het invoegen van documenten zonder de _id velden.

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

Resultaat:

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

De _id waarden van de documenten worden geretourneerd. We zouden deze kunnen gebruiken om de collectie te doorzoeken op alleen de documenten die we hebben ingevoegd.

Maar laten we in dit geval eens naar de hele collectie kijken.

db.pets.find()

Resultaat:

{ "_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" }

We kunnen zien dat onze twee nieuwe documenten in de collectie zijn opgenomen.

De ordered Parameter

De db.collection.insertMany() methode accepteert ook een ordered parameter. Dit is een booleaanse parameter met een standaardwaarde van true .

De ordered parameter specificeert of de invoegbewerking moet worden besteld of ongeordend.

Indien ordered is ingesteld op false , documenten worden in een ongeordend formaat ingevoegd en kunnen opnieuw worden gerangschikt door mongod om de prestaties te verbeteren.

Bij bestelde invoegingen, als er een fout optreedt tijdens een invoeging van een van de documenten, geeft MongoDB een fout terug zonder de resterende documenten in de array te verwerken.

Als er bij ongeordende invoegingen een fout optreedt tijdens het invoegen van een van de documenten, gaat MongoDB door met het invoegen van de overige documenten in de array.

Meer informatie

De db.collection.insertMany() methode accepteert ook een writeConcern argument, dat het niveau van bevestiging beschrijft dat van MongoDB is gevraagd voor schrijfbewerkingen.

Zie de MongoDB-documentatie voor db.collection.insertMany() voor meer informatie.


  1. 5 manieren om rijen te selecteren met de maximale waarde voor hun groep in SQL

  2. Forceer mongodb om strikte JSON uit te voeren

  3. Docker [Errno 111] Connect-oproep mislukt ('127.0.0.1', 6379)

  4. MongoDB .Net driver 2.0 Pull (element verwijderen)