sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB $mul

MongoDB har en $mul fältuppdateringsoperator som låter dig multiplicera ett värde med ett specifikt belopp.

Om fältet inte redan finns skapas det och dess värde sätts till noll (0 ) med samma numeriska typ som multiplikatorn.

Exempel

Anta att vi har en samling med följande dokument:

{ "_id" : 1, "bar" : 10 } 

Vi kan använda $mul operatorn i kombination med update() metod för att öka bar fältet.

Så här:

db.foo.update(
  { _id: 1 },
  { $mul: { bar: 2 } }
)

Utdata:

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Detta talar om för oss att ett dokument matchades och modifierades.

Låt oss kolla in samlingen igen:

db.foo.find()

Resultat:

{ "_id" : 1, "bar" : 20 } 

Vi kan se att beloppet har fördubblats till 20.

Multiplicera ett fält som inte finns

När du använder $mul på ett fält som inte finns i dokumentet läggs fältet till och sätts till noll (0 ) med samma numeriska typ som multiplikatorn.

Exempel:

db.foo.update(
  { _id: 1 },
  { $mul: { bar: 3, extra: 2 } }
)

Utdata:

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Observera att vi uppdaterade två fält; bar fältet och extra fält (som inte fanns från början).

Låt oss kontrollera dokumentet igen:

db.foo.find()

Resultat:

{ "_id" : 1, "bar" : 60, "extra" : 0 } 

Vi kan se att bar fältet har multiplicerats med 3 , och en ny extra fältet har lagts till och satt till 0 .

Blandade typer

Multiplikation med värden för blandade numeriska typer (32-bitars heltal, 64-bitars heltal, flytande) kan resultera i konvertering av numerisk typ.

Se MongoDB-dokumentationen för en förklaring.


  1. Hur man hämtar dagen, månaden och året från ett datum i SQL

  2. Hur använder man MongoDB-transaktioner med Mongoose?

  3. Nod + Mongoose:Få senast infogade ID?

  4. Mongoose och flera databas i ett enda node.js-projekt