I MongoDB är db.collection.insertMany()
metoden infogar flera dokument i en samling.
collection
del är namnet på samlingen att infoga dokumenten i.
Exempel
Här är ett exempel på hur du använder db.collection.insertMany()
för att infoga flera dokument i en samling som heter 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()
metod returnerar ett dokument som innehåller:
- En boolesk
acknowledged
somtrue
om operationen kördes med skrivproblem ellerfalse
om skrivproblem har inaktiverats. - En matris med
_id
värden för varje framgångsrikt infogat dokument.
Om vi nu använder db.collection.find()
för att titta på samlingen kommer vi att se de nyligen tillagda dokumenten.
db.pets.find()
Resultat:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" }
I det här fallet är våra tre dokument de enda i samlingen, och därför returnerades endast dessa dokument.
Men om samlingen var stor kunde vi använda dokument-ID:n för att begränsa resultatet till bara de dokument som vi är intresserade av.
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" }
Vad händer om samlingen inte finns?
Om samlingen inte finns skapas den och dokumenten läggs till i den.
Om samlingen redan finns läggs dokumenten helt enkelt till i den (förutsatt deras _id
värden kommer inte i konflikt med några befintliga).
När jag skapade det här exemplet fanns inte samlingen, så infogningsoperationen skapade den.
_id
Fält
_id
field är ett unikt identifierarfält i MongoDB.
Som visades i föregående exempel kan du ange ditt eget _id
fältet i dokumentet. Om du gör det måste dess värde vara unikt i samlingen. Detta beror på att ditt _id
fältet kommer att användas som den unika identifieraren för dokumentet.
Här är ett exempel på att infoga dokument utan att ange _id
fält.
db.pets.insertMany([
{ name: "Bruce", type: "Bat" },
{ name: "Sweetie", type: "Honey Badger" }
])
Resultat:
{ "acknowledged" : true, "insertedIds" : [ ObjectId("5fe30ef737b49e0faf1af215"), ObjectId("5fe30ef737b49e0faf1af216") ] }
_id
värden på dokumenten returneras. Vi skulle kunna använda dessa för att söka i samlingen efter bara de dokument som vi infogade.
Men i det här fallet, låt oss titta på hela 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 att våra två nya dokument ingår i samlingen.
Den ordered
Parameter
db.collection.insertMany()
metoden accepterar också en ordered
parameter. Detta är en boolesk parameter med standardvärdet true
.
Den ordered
parametern anger om infogningsoperationen ska beställas eller oordnad.
Om ordered
är inställd på false
, dokument infogas i ett oordnat format och kan ordnas om av mongod
för att öka prestandan.
Med beställda bilagor, om ett fel inträffar under en infogning av ett av dokumenten, returnerar MongoDB fel utan att bearbeta de återstående dokumenten i arrayen.
Med oordnade bilagor, om ett fel inträffar under en infogning av ett av dokumenten, fortsätter MongoDB att infoga de återstående dokumenten i arrayen.
Mer information
db.collection.insertMany()
metoden accepterar också en writeConcern
argument, som beskriver nivån på bekräftelse som begärs från MongoDB för skrivoperationer.
Se MongoDB-dokumentationen för db.collection.insertMany()
för mer information.