MongoDB har en $mul
feltopdateringsoperatør, der giver dig mulighed for at gange en værdi med et bestemt beløb.
Hvis feltet ikke allerede eksisterer, oprettes det, og dets værdi sættes til nul (0
) ved at bruge den samme numeriske type som multiplikatoren.
Eksempel
Antag, at vi har en samling med følgende dokument:
{ "_id" : 1, "bar" : 10 }
Vi kan bruge $mul
operator i forbindelse med update()
metode til at øge bar
felt.
Sådan:
db.foo.update(
{ _id: 1 },
{ $mul: { bar: 2 } }
)
Output:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Dette fortæller os, at ét dokument blev matchet og ændret.
Lad os tjekke samlingen igen:
db.foo.find()
Resultat:
{ "_id" : 1, "bar" : 20 }
Vi kan se, at beløbet er fordoblet til 20.
Multipér et felt, der ikke eksisterer
Når du bruger $mul
på et felt, der ikke findes i dokumentet, tilføjes feltet og indstilles til nul (0
) ved at bruge den samme numeriske type som multiplikatoren.
Eksempel:
db.foo.update(
{ _id: 1 },
{ $mul: { bar: 3, extra: 2 } }
)
Output:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Bemærk, at vi har opdateret to felter; bar
feltet og extra
felt (som ikke oprindeligt eksisterede).
Lad os tjekke dokumentet igen:
db.foo.find()
Resultat:
{ "_id" : 1, "bar" : 60, "extra" : 0 }
Vi kan se, at bar
felt er blevet ganget med 3
, og en ny extra
felt er blevet tilføjet og sat til 0
.
Blandede typer
Multiplikation med værdier af blandede numeriske typer (32-bit heltal, 64-bit heltal, float) kan resultere i konvertering af numerisk type.
Se MongoDB-dokumentationen for en forklaring.