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.