MongoDB $set Operátor aktualizace nahradí hodnotu pole zadanou hodnotou.
Používá se ve spojení s operacemi aktualizace, například při použití update() způsob aktualizace dokumentu.
Příklad
Předpokládejme, že máme sbírku nazvanou dogs s následujícím dokumentem:
{ "_id" : 1, "name" : "Wag", "weight" : 20 }
A předpokládejme, že chceme změnit váhu psa. Můžeme spustit následující update() příkaz pro aktualizaci hmotnosti:
db.dogs.update(
{ _id: 1 },
{
$set: { weight: 30 }
}
) Výsledkem bude následující výstup:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) Což nám říká, že jeden dokument byl spárován a upraven.
Podívejme se na sbírku:
db.dogs.find() Výsledek:
{ "_id" : 1, "name" : "Wag", "weight" : 30 } Vidíme, že váha byla aktualizována na zadanou hodnotu.
Je také možné zvýšit hodnoty o zadanou částku, ale k tomu bychom museli použít $inc operátor namísto $set .
Ale tento článek je celý o $set operátora, takže pokračujme.
Když pole neexistuje
Pokud pole, které se pokoušíte aktualizovat, neexistuje, bude pole přidáno do dokumentu se zadanou hodnotou.
Příklad:
db.dogs.update(
{ _id: 1 },
{
$set: { height: 40 }
}
) Výstup:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) Vidíme, že jeden dokument byl spárován a upraven.
Podívejme se znovu na sbírku.
db.dogs.find() Výsledek:
{ "_id" : 1, "name" : "Wag", "weight" : 30, "height" : 40 }
Nyní tedy dokument obsahuje height pole se zadanou hodnotou.
Vložené dokumenty
Hodnoty ve vložených dokumentech můžete aktualizovat pomocí tečkové notace. Pokud zadaná cesta ještě neexistuje, je vytvořena.
Příklad:
db.dogs.update(
{ _id: 1 },
{
$set: {
"meals.breakfast": "Fish",
"meals.lunch": "Chicken",
"meals.dinner": "Beef"
}
}
) Výstup:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Použijme findOne() pro vrácení dokumentu:
db.dogs.findOne() Výsledek:
{
"_id" : 1,
"name" : "Wag",
"weight" : 30,
"height" : 40,
"meals" : {
"breakfast" : "Fish",
"dinner" : "Beef",
"lunch" : "Chicken"
}
} Vidíme, že vložený dokument byl přidán podle specifikace.
Pole
Data v polích můžete aktualizovat pomocí tečkové notace při zadávání indexu prvku, který chcete aktualizovat.
Předpokládejme, že máme následující dokument:
{
"_id" : 1,
"name" : "Wag",
"awards" : [
"Top Dog",
"Best Dog",
"Biggest Dog"
]
} Pojďme aktualizovat dva prvky pole a jméno psa.
db.dogs.update({
_id: 1
}, {
$set: {
"name": "Bark",
"awards.0": "Bottom Dog",
"awards.1": "Worst Dog"
}
}) Výsledek:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) Vidíme, že jeden dokument byl spárován a upraven.
A teď se podívejte na dokument.
db.dogs.findOne() Výsledek:
{
"_id" : 1,
"name" : "Bark",
"awards" : [
"Bottom Dog",
"Worst Dog",
"Biggest Dog"
]
}