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

Hvordan $set Update Operator fungerer i MongoDB

MongoDB $set update operator erstatter værdien af ​​et felt med den angivne værdi.

Det bruges i forbindelse med opdateringsoperationer, for eksempel ved brug af update() metode til at opdatere et dokument.

Eksempel

Antag, at vi har en samling kaldet dogs med følgende dokument:

{ "_id" : 1, "name" : "Wag", "weight" : 20 }

Og antag, at vi vil ændre hundens vægt. Vi kan køre følgende update() kommando for at opdatere vægten:

db.dogs.update(
  { _id: 1 },
  {
     $set: { weight: 30 }
  }
)

Dette vil resultere i følgende output:

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Hvilket fortæller os, at ét dokument blev matchet og ændret.

Lad os tjekke samlingen:

db.dogs.find()

Resultat:

{ "_id" : 1, "name" : "Wag", "weight" : 30 }

Vi kan se, at vægten er blevet opdateret til den angivne værdi.

Det er også muligt at øge værdier med et specificeret beløb, men for at gøre det skal vi bruge $inc operator i stedet for $set .

Men denne artikel handler om $set operatør, så lad os fortsætte.

Når feltet ikke eksisterer

Hvis feltet, du forsøger at opdatere, ikke eksisterer, føjes feltet til dokumentet med den angivne værdi.

Eksempel:

db.dogs.update(
  { _id: 1 },
  {
     $set: { height: 40 }
  }
)

Output:

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Vi kan se, at ét dokument blev matchet og ændret.

Lad os tjekke samlingen igen.

db.dogs.find()

Resultat:

{ "_id" : 1, "name" : "Wag", "weight" : 30, "height" : 40 }

Så nu indeholder dokumentet en height felt med den angivne værdi.

Indlejrede dokumenter

Du kan opdatere værdier i indlejrede dokumenter ved at bruge punktnotation. Hvis den angivne sti ikke allerede eksisterer, oprettes den.

Eksempel:

db.dogs.update(
  { _id: 1 },
  {
     $set: { 
       "meals.breakfast": "Fish", 
       "meals.lunch": "Chicken", 
       "meals.dinner": "Beef" 
       }
  }
)

Output:

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Lad os bruge findOne() for at returnere dokumentet:

db.dogs.findOne()

Resultat:

{
	"_id" : 1,
	"name" : "Wag",
	"weight" : 30,
	"height" : 40,
	"meals" : {
		"breakfast" : "Fish",
		"dinner" : "Beef",
		"lunch" : "Chicken"
	}
}

Vi kan se, at det indlejrede dokument er blevet tilføjet som angivet.

Arrays

Du kan opdatere data i arrays ved at bruge punktnotation, mens du angiver indekset for det element, du vil opdatere.

Antag, at vi har følgende dokument:

{
	"_id" : 1,
	"name" : "Wag",
	"awards" : [
		"Top Dog",
		"Best Dog",
		"Biggest Dog"
	]
}

Lad os opdatere to af array-elementerne og hundens navn.

db.dogs.update({ 
    _id: 1 
    }, { 
        $set: { 
            "name": "Bark",
            "awards.0": "Bottom Dog", 
            "awards.1": "Worst Dog"
        } 
})

Resultat:

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) 

Vi kan se, at ét dokument blev matchet og ændret.

Og se nu på dokumentet.

db.dogs.findOne()

Resultat:

{
	"_id" : 1,
	"name" : "Bark",
	"awards" : [
		"Bottom Dog",
		"Worst Dog",
		"Biggest Dog"
	]
}


  1. MongoDB - Opret en samling

  2. Overvejelser for at administrere MongoDB

  3. Mongod klager over, at der ikke er nogen /data/db-mappe

  4. MongoDB Single Documents størrelsesgrænse er 16MB