sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB indsæt()

I MongoDB er db.collection.insert() metode indsætter et eller flere dokumenter i en samling.

collection del er navnet på den samling, som dokumentet/dokumenterne skal indsættes i.

Eksempel

Her er et eksempel på brug af db.collection.insert() at indsætte flere dokumenter i en samling kaldet 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() metode returnerer et objekt, der indeholder status for indsættelsesoperationen.

Det returnerede objekt afhænger af, om der er indsat et enkelt dokument eller flere dokumenter.

  • Når et enkelt dokument indsættes, returnerer det et WriteResult objekt.
  • Når et array af dokumenter indsættes, returnerer det et BulkWriteResult objekt.

Vi kan se, at ovenstående eksempel returnerede et BulkWriteResult objekt. Dette skyldes, at vi har tilføjet en række dokumenter. Det ville have gjort dette, selvom arrayet kun indeholdt ét element.

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 et dokument uden at angive _id felter.

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

Resultat:

WriteResult({ "nInserted" : 1 })

Bemærk, at i dette tilfælde returnerer metoden et WriteResult objekt i stedet for et BulkWriteResult objekt. Dette skyldes, at vi indsatte et enkelt dokument (og det var ikke i et array).

Lad os nu se 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, at vores nye dokument er inkluderet i samlingen, og det har en _id felt med en automatisk genereret værdi.

Den ordered Parameter

db.collection.insert() 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.insert() 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.insert() for mere information.


  1. Håndtering af brugerdefineret BSON Marshaling

  2. Hvordan opretter man forbindelse til ekstern Redis-server?

  3. Multipel brug af positionsoperatoren `$` til at opdatere indlejrede arrays

  4. Hvordan kan jeg gennemse eller forespørge om live MongoDB-data?