MongoDB heeft een $mul
veldupdate-operator waarmee u een waarde met een bepaald bedrag kunt vermenigvuldigen.
Als het veld nog niet bestaat, wordt het gemaakt en wordt de waarde op nul gezet (0
) met hetzelfde numerieke type als de vermenigvuldiger.
Voorbeeld
Stel dat we een verzameling hebben met het volgende document:
{ "_id" : 1, "bar" : 10 }
We kunnen de $mul
. gebruiken operator in combinatie met de update()
methode om de bar
. te verhogen veld.
Zoals dit:
db.foo.update(
{ _id: 1 },
{ $mul: { bar: 2 } }
)
Uitgang:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Dit vertelt ons dat één document is gematcht en gewijzigd.
Laten we de collectie nog eens bekijken:
db.foo.find()
Resultaat:
{ "_id" : 1, "bar" : 20 }
We kunnen zien dat het bedrag is verdubbeld tot 20.
Vermenigvuldig een veld dat niet bestaat
Wanneer u $mul
. gebruikt op een veld dat niet in het document bestaat, wordt het veld toegevoegd en op nul gezet (0
) met hetzelfde numerieke type als de vermenigvuldiger.
Voorbeeld:
db.foo.update(
{ _id: 1 },
{ $mul: { bar: 3, extra: 2 } }
)
Uitgang:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Merk op dat we twee velden hebben bijgewerkt; de bar
veld en de extra
veld (dat oorspronkelijk niet bestond).
Laten we het document nog eens controleren:
db.foo.find()
Resultaat:
{ "_id" : 1, "bar" : 60, "extra" : 0 }
We kunnen zien dat de bar
veld is vermenigvuldigd met 3
, en een nieuwe extra
veld is toegevoegd en ingesteld op 0
.
Gemengde soorten
Vermenigvuldiging met waarden van gemengde numerieke typen (32-bit integer, 64-bit integer, float) kan resulteren in conversie van numeriek type.
Zie de MongoDB-documentatie voor uitleg.