sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB insert()

I MongoDB är db.collection.insert() metoden infogar ett eller flera dokument i en samling.

collection del är namnet på samlingen som dokumentet/dokumenten ska infogas i.

Exempel

Här är ett exempel på hur du använder db.collection.insert() för att infoga flera dokument i en samling som heter pets :

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

Resultat:

BulkWriteResult({
	"writeErrors" : [ ],
	"writeConcernErrors" : [ ],
	"nInserted" : 3,
	"nUpserted" : 0,
	"nMatched" : 0,
	"nModified" : 0,
	"nRemoved" : 0,
	"upserted" : [ ]
})

db.collection.insert() metod returnerar ett objekt som innehåller statusen för infogningsoperationen.

Objektet som returneras beror på om ett enda dokument har infogats eller flera dokument.

  • När ett enskilt dokument infogas returnerar det ett WriteResult objekt.
  • När en matris med dokument infogas returnerar den ett BulkWriteResult objekt.

Vi kan se att exemplet ovan returnerade ett BulkWriteResult objekt. Detta beror på att vi har lagt till en mängd dokument. Det skulle ha gjort detta även om arrayen bara innehöll ett element.

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å infogningen 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å hur du infogar ett dokument utan att ange _id fält.

db.pets.insert(
    { name: "Bruce", type: "Bat" }
    )

Resultat:

WriteResult({ "nInserted" : 1 })

Observera att i det här fallet returnerar metoden ett WriteResult objekt istället för ett BulkWriteResult objekt. Detta beror på att vi infogade ett enda dokument (och det var inte i en array).

Låt oss nu titta på samlingen igen.

db.pets.find()

Resultat:

{ "_id" : 1, "name" : "Wag", "type" : "Dog" }
{ "_id" : 2, "name" : "Bark", "type" : "Dog" }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }
{ "_id" : ObjectId("5fe323d837b49e0faf1af218"), "name" : "Bruce", "type" : "Bat" }

Vi kan se att vårt nya dokument ingår i samlingen och det har en _id fält med ett automatiskt genererat värde.

Den ordered Parameter

db.collection.insert() 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.insert() 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.insert() för mer information.


  1. Uppdatera en kapslad array med MongoDB

  2. mongodb textsökning med flera språk

  3. Kan inte få Jedis-anslutning när du använder SSL med Redis och Spring Data Redis

  4. Ställa in ett dynamiskt fält i Ohm / Redis