I MongoDB er db.collection.insertMany()
metode indsætter flere dokumenter i en samling.
collection
del er navnet på den samling, som dokumenterne skal indsættes i.
Eksempel
Her er et eksempel på brug af db.collection.insertMany()
at indsætte flere dokumenter i en samling kaldet pets
:
db.pets.insertMany([
{ _id: 1, name: "Wag", type: "Dog" },
{ _id: 2, name: "Bark", type: "Dog" },
{ _id: 3, name: "Meow", type: "Cat" }
])
Resultat:
{ "acknowledged" : true, "insertedIds" : [ 1, 2, 3 ] }
db.collection.insertMany()
metode returnerer et dokument, der indeholder:
- En boolesk
acknowledged
somtrue
hvis operationen kørte med skrivebekymring ellerfalse
hvis skriveproblemer var deaktiveret. - En matrix af
_id
værdier for hvert vellykket indsat dokument.
Hvis vi nu bruger db.collection.find()
for at se på samlingen, vil vi se de nyligt tilføjede dokumenter.
db.pets.find()
Resultat:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" }
I dette tilfælde er vores tre dokumenter de eneste i samlingen, og derfor blev kun disse dokumenter returneret.
Men hvis samlingen var stor, kunne vi bruge dokument-id'erne til at indsnævre resultatet til kun de dokumenter, vi er interesserede i.
db.pets.find({_id: {$in: [1,2,3]}})
Resultat:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" }
Hvad hvis samlingen ikke eksisterer?
Hvis samlingen ikke eksisterer, oprettes den, og dokumenterne tilføjes til den.
Hvis samlingen allerede eksisterer, føjes dokumenterne blot til den (forudsat deres _id
værdier er ikke i konflikt med nogen eksisterende).
Da jeg oprettede dette eksempel, eksisterede samlingen ikke, så indsættelsesoperationen skabte den.
_id
Felt
_id
felt er et unikt identifikationsfelt i MongoDB.
Som vist i det foregående eksempel kan du angive dit eget _id
felt i dokumentet. Hvis du gør det, skal dens værdi være unik i samlingen. Dette er fordi dit _id
feltet vil blive brugt som den unikke identifikator for dokumentet.
Her er et eksempel på indsættelse af dokumenter uden at angive _id
felter.
db.pets.insertMany([
{ name: "Bruce", type: "Bat" },
{ name: "Sweetie", type: "Honey Badger" }
])
Resultat:
{ "acknowledged" : true, "insertedIds" : [ ObjectId("5fe30ef737b49e0faf1af215"), ObjectId("5fe30ef737b49e0faf1af216") ] }
_id
værdierne af dokumenterne returneres. Vi kunne bruge disse til at søge i samlingen efter kun de dokumenter, vi indsatte.
Men i dette tilfælde, lad os se på hele samlingen.
db.pets.find()
Resultat:
{ "_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" }
Vi kan se, at vores to nye dokumenter er med i samlingen.
Den ordered
Parameter
db.collection.insertMany()
metode accepterer også en ordered
parameter. Dette er en boolesk parameter med standardværdien true
.
Den ordered
parameter angiver, om indsættelsesoperationen skal bestilles eller ikke.
Hvis ordered
er indstillet til false
, dokumenter indsættes i et uordnet format og kan omarrangeres af mongod
for at øge ydeevnen.
Med bestilte indstik, hvis der opstår en fejl under en indsættelse af et af dokumenterne, returnerer MongoDB ved fejl uden at behandle de resterende dokumenter i arrayet.
Med uordnede indsættelser, hvis der opstår en fejl under en indsættelse af et af dokumenterne, fortsætter MongoDB med at indsætte de resterende dokumenter i arrayet.
Flere oplysninger
db.collection.insertMany()
metode accepterer også en writeConcern
argument, som beskriver niveauet af bekræftelse, der anmodes om fra MongoDB for skriveoperationer.
Se MongoDB-dokumentationen for db.collection.insertMany()
for mere information.