MongoDB má $inc
operátor aktualizace pole, který vám umožňuje zvýšit hodnotu o určitou částku.
Můžete použít kladné a záporné hodnoty (tj. ke zvýšení nebo snížení hodnoty).
Pokud pole ještě neexistuje, je vytvořeno se zadanou hodnotou.
Příklad
Předpokládejme, že máme sbírku nazvanou dogs
s následujícím dokumentem:
{ "_id" : 1, "name" : "Wag", "weight" : 10 }
Zde je weight
pole obsahuje hodnotu, kterou lze zvýšit nebo snížit.
Přírůstek
Můžeme použít $inc
operátor ve spojení s update()
způsob, jak zvýšit hmotnost tohoto psa.
Takhle:
db.dogs.update(
{ _id: 1 },
{ $inc: { weight: 5 } }
)
Výstup:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
To nám říká, ž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" : 15 }
Můžeme vidět, že váha psa se zvýšila o 5.
Snížit
Hodnotu můžete snížit zadáním záporné hodnoty do $inc
operátor.
Takhle:
db.dogs.update(
{ _id: 1 },
{ $inc: { weight: -5 } }
)
Výstup:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Zkontrolujte sbírku:
db.dogs.find()
Výsledek:
{ "_id" : 1, "name" : "Wag", "weight" : 10 }
Vidíme, že váha byla nyní snížena o 5.
Zvýšit pole, které neexistuje
Když zvýšíte pole, které v dokumentu neexistuje, pole se přidá a přiřadí mu zadanou hodnotu.
Příklad:
db.dogs.update(
{ _id: 1 },
{ $inc: { weight: 1, height: 30 } }
)
Výstup:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Všimněte si, že jsme aktualizovali dvě pole; weight
pole a height
pole (které původně neexistovalo).
Podívejme se znovu na dokument:
db.dogs.find()
Výsledek:
{ "_id" : 1, "name" : "Wag", "weight" : 11, "height" : 30 }
Vidíme, že weight
pole bylo zvýšeno o 1
a novou height
pole bylo přidáno se zadanou hodnotou 30
.