sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB $mul

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.


  1. MongoDB $stdDevPop

  2. Rozdíl mezi protokolem Redis AOF a Tarantool WAL

  3. Možnost automatického opětovného připojení Mongoose

  4. MongoDB:zkontrolujte připojení k DB