De MongoDB $set update-operator vervangt de waarde van een veld door de opgegeven waarde.
Het wordt gebruikt in combinatie met update-bewerkingen, bijvoorbeeld bij het gebruik van de update() methode om een document bij te werken.
Voorbeeld
Stel dat we een verzameling hebben met de naam dogs met het volgende document:
{ "_id" : 1, "name" : "Wag", "weight" : 20 }
En stel dat we het gewicht van de hond willen veranderen. We kunnen de volgende update() . uitvoeren commando om het gewicht bij te werken:
db.dogs.update(
{ _id: 1 },
{
$set: { weight: 30 }
}
) Dit resulteert in de volgende uitvoer:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) Wat ons vertelt dat één document is gematcht en aangepast.
Laten we de collectie eens bekijken:
db.dogs.find() Resultaat:
{ "_id" : 1, "name" : "Wag", "weight" : 30 } We kunnen zien dat het gewicht is bijgewerkt naar de opgegeven waarde.
Het is ook mogelijk om waarden met een bepaald bedrag te verhogen, maar daarvoor moeten we de $inc gebruiken operator in plaats van $set .
Maar dit artikel gaat helemaal over de $set operator, dus laten we doorgaan.
Als het veld niet bestaat
Als het veld dat u probeert bij te werken niet bestaat, wordt het veld toegevoegd aan het document met de opgegeven waarde.
Voorbeeld:
db.dogs.update(
{ _id: 1 },
{
$set: { height: 40 }
}
) Uitgang:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) We kunnen zien dat één document is gematcht en gewijzigd.
Laten we de collectie nog eens bekijken.
db.dogs.find() Resultaat:
{ "_id" : 1, "name" : "Wag", "weight" : 30, "height" : 40 }
Dus nu bevat het document een height veld met de opgegeven waarde.
Ingesloten documenten
U kunt waarden in ingesloten documenten bijwerken met behulp van puntnotatie. Als het opgegeven pad nog niet bestaat, wordt het gemaakt.
Voorbeeld:
db.dogs.update(
{ _id: 1 },
{
$set: {
"meals.breakfast": "Fish",
"meals.lunch": "Chicken",
"meals.dinner": "Beef"
}
}
) Uitgang:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Laten we findOne() . gebruiken om het document terug te sturen:
db.dogs.findOne() Resultaat:
{
"_id" : 1,
"name" : "Wag",
"weight" : 30,
"height" : 40,
"meals" : {
"breakfast" : "Fish",
"dinner" : "Beef",
"lunch" : "Chicken"
}
} We kunnen zien dat het ingesloten document is toegevoegd zoals gespecificeerd.
Arrays
U kunt gegevens in arrays bijwerken door puntnotatie te gebruiken terwijl u de index opgeeft van het element dat u wilt bijwerken.
Stel dat we het volgende document hebben:
{
"_id" : 1,
"name" : "Wag",
"awards" : [
"Top Dog",
"Best Dog",
"Biggest Dog"
]
} Laten we twee van de array-elementen en de naam van de hond bijwerken.
db.dogs.update({
_id: 1
}, {
$set: {
"name": "Bark",
"awards.0": "Bottom Dog",
"awards.1": "Worst Dog"
}
}) Resultaat:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) We kunnen zien dat één document is gematcht en gewijzigd.
En kijk nu naar het document.
db.dogs.findOne() Resultaat:
{
"_id" : 1,
"name" : "Bark",
"awards" : [
"Bottom Dog",
"Worst Dog",
"Biggest Dog"
]
}