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"
]
}