MongoDB ma $inc
operator aktualizacji pola, który pozwala zwiększyć wartość o określoną kwotę.
Możesz używać wartości dodatnich i ujemnych (np. do zwiększania lub zmniejszania wartości).
Jeśli pole jeszcze nie istnieje, jest tworzone z określoną wartością.
Przykład
Załóżmy, że mamy kolekcję o nazwie dogs
z następującym dokumentem:
{ "_id" : 1, "name" : "Wag", "weight" : 10 }
Tutaj weight
pole zawiera wartość, którą można zwiększyć lub zmniejszyć.
Przyrost
Możemy użyć $inc
operator w połączeniu z update()
metoda na zwiększenie wagi tego psa.
Tak:
db.dogs.update(
{ _id: 1 },
{ $inc: { weight: 5 } }
)
Wyjście:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
To mówi nam, że jeden dokument został dopasowany i zmodyfikowany.
Sprawdźmy jeszcze raz kolekcję:
db.dogs.find()
Wynik:
{ "_id" : 1, "name" : "Wag", "weight" : 15 }
Widzimy, że waga psa wzrosła o 5.
Zmniejsz
Możesz zmniejszyć wartość, podając wartość ujemną do $inc
operatora.
Tak:
db.dogs.update(
{ _id: 1 },
{ $inc: { weight: -5 } }
)
Wyjście:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Sprawdź kolekcję:
db.dogs.find()
Wynik:
{ "_id" : 1, "name" : "Wag", "weight" : 10 }
Widzimy, że waga została zmniejszona o 5.
Zwiększ pole, które nie istnieje
Kiedy zwiększasz pole, które nie istnieje w dokumencie, pole to jest dodawane i przypisywane jest mu określona wartość.
Przykład:
db.dogs.update(
{ _id: 1 },
{ $inc: { weight: 1, height: 30 } }
)
Wyjście:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Zauważ, że zaktualizowaliśmy dwa pola; weight
pole i height
pole (które pierwotnie nie istniało).
Sprawdźmy ponownie dokument:
db.dogs.find()
Wynik:
{ "_id" : 1, "name" : "Wag", "weight" : 11, "height" : 30 }
Widzimy, że weight
pole zostało zwiększone o 1
i nową height
dodano pole z określoną wartością 30
.