sql >> Database >  >> NoSQL >> MongoDB

MongoDB $mul

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.


  1. het MongoDB-cachesysteem begrijpen

  2. Heroku aangepast domein werkt niet

  3. Hoe maak je een model in DRY-patroon met behulp van flow.js (voor asynchrone oproepen) in node.js?

  4. Waarom geeft PyMongo 3 ServerSelectionTimeoutError?