MongoDB má $mul
operátor aktualizace pole, který vám umožňuje vynásobit hodnotu konkrétní částkou.
Pokud pole ještě neexistuje, je vytvořeno a jeho hodnota je nastavena na nulu (0
) pomocí stejného číselného typu jako násobitel.
Příklad
Předpokládejme, že máme kolekci s následujícím dokumentem:
{ "_id" : 1, "bar" : 10 }
Můžeme použít $mul
operátor ve spojení s update()
metoda pro zvýšení bar
pole.
Takhle:
db.foo.update(
{ _id: 1 },
{ $mul: { bar: 2 } }
)
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.foo.find()
Výsledek:
{ "_id" : 1, "bar" : 20 }
Vidíme, že částka se zdvojnásobila na 20.
Vynásobte pole, které neexistuje
Když použijete $mul
u pole, které v dokumentu neexistuje, se pole přidá a nastaví na nulu (0
) pomocí stejného číselného typu jako násobitel.
Příklad:
db.foo.update(
{ _id: 1 },
{ $mul: { bar: 3, extra: 2 } }
)
Výstup:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Všimněte si, že jsme aktualizovali dvě pole; bar
pole a extra
pole (které původně neexistovalo).
Podívejme se znovu na dokument:
db.foo.find()
Výsledek:
{ "_id" : 1, "bar" : 60, "extra" : 0 }
Vidíme, že bar
pole bylo vynásobeno 3
a nový extra
pole bylo přidáno a nastaveno na 0
.
Smíšené typy
Násobení hodnotami smíšených číselných typů (32bitové celé číslo, 64bitové celé číslo, float) může vést ke konverzi číselného typu.
Vysvětlení naleznete v dokumentaci MongoDB.