MongoDB $set operator aktualizacji zastępuje wartość pola określoną wartością.
Jest używany w połączeniu z operacjami aktualizacji, na przykład podczas korzystania z update() metoda aktualizacji dokumentu.
Przykład
Załóżmy, że mamy kolekcję o nazwie dogs z następującym dokumentem:
{ "_id" : 1, "name" : "Wag", "weight" : 20 }
I załóżmy, że chcemy zmienić wagę psa. Możemy uruchomić następującą update() polecenie aktualizacji wagi:
db.dogs.update(
{ _id: 1 },
{
$set: { weight: 30 }
}
) Spowoduje to następujący wynik:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) Co mówi nam, że jeden dokument został dopasowany i zmodyfikowany.
Sprawdźmy kolekcję:
db.dogs.find() Wynik:
{ "_id" : 1, "name" : "Wag", "weight" : 30 } Widzimy, że waga została zaktualizowana do określonej wartości.
Możliwe jest również zwiększenie wartości o określoną kwotę, ale w tym celu musielibyśmy użyć $inc operator zamiast $set .
Ale ten artykuł dotyczy $set operatora, więc kontynuujmy.
Kiedy pole nie istnieje
Jeśli pole, które próbujesz zaktualizować, nie istnieje, zostanie ono dodane do dokumentu z określoną wartością.
Przykład:
db.dogs.update(
{ _id: 1 },
{
$set: { height: 40 }
}
) Wyjście:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) Widzimy, że jeden dokument został dopasowany i zmodyfikowany.
Sprawdźmy ponownie kolekcję.
db.dogs.find() Wynik:
{ "_id" : 1, "name" : "Wag", "weight" : 30, "height" : 40 }
Więc teraz dokument zawiera height pole o określonej wartości.
Osadzone dokumenty
Możesz aktualizować wartości w osadzonych dokumentach za pomocą notacji kropkowej. Jeśli określona ścieżka jeszcze nie istnieje, zostanie utworzona.
Przykład:
db.dogs.update(
{ _id: 1 },
{
$set: {
"meals.breakfast": "Fish",
"meals.lunch": "Chicken",
"meals.dinner": "Beef"
}
}
) Wyjście:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Użyjmy findOne() aby zwrócić dokument:
db.dogs.findOne() Wynik:
{
"_id" : 1,
"name" : "Wag",
"weight" : 30,
"height" : 40,
"meals" : {
"breakfast" : "Fish",
"dinner" : "Beef",
"lunch" : "Chicken"
}
} Widzimy, że osadzony dokument został dodany zgodnie z opisem.
Tablice
Możesz aktualizować dane w tablicach, używając notacji kropkowej podczas określania indeksu elementu, który chcesz zaktualizować.
Załóżmy, że mamy następujący dokument:
{
"_id" : 1,
"name" : "Wag",
"awards" : [
"Top Dog",
"Best Dog",
"Biggest Dog"
]
} Zaktualizujmy dwa elementy tablicy i imię psa.
db.dogs.update({
_id: 1
}, {
$set: {
"name": "Bark",
"awards.0": "Bottom Dog",
"awards.1": "Worst Dog"
}
}) Wynik:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) Widzimy, że jeden dokument został dopasowany i zmodyfikowany.
A teraz spójrz na dokument.
db.dogs.findOne() Wynik:
{
"_id" : 1,
"name" : "Bark",
"awards" : [
"Bottom Dog",
"Worst Dog",
"Biggest Dog"
]
}