sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB insertMany()

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 som true om operationen kördes med skrivproblem eller false 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.


  1. Mongo tryck till array inuti array

  2. mgo - frågeprestanda verkar konsekvent långsam (500-650ms)

  3. Hur man använder ny URL från mongodb 3.6 för att ansluta från golang

  4. Hur man korrekt återanvänder anslutning till Mongodb över NodeJs applikation och moduler