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.