MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

MongoDB $mul

MongoDB a un $mul opérateur de mise à jour de champ qui permet de multiplier une valeur par un montant spécifique.

Si le champ n'existe pas déjà, il est créé et sa valeur est mise à zéro (0 ) en utilisant le même type numérique que le multiplicateur.

Exemple

Supposons que nous ayons une collection avec le document suivant :

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

Nous pouvons utiliser le $mul opérateur en conjonction avec le update() méthode pour incrémenter la bar champ.

Comme ceci :

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

Sortie :

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

Cela nous indique qu'un document a été mis en correspondance et modifié.

Vérifions à nouveau la collection :

db.foo.find()

Résultat :

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

Nous pouvons voir que le montant a doublé pour atteindre 20.

Multiplier un champ qui n'existe pas

Lorsque vous utilisez $mul sur un champ qui n'existe pas dans le document, le champ est ajouté et mis à zéro (0 ) en utilisant le même type numérique que le multiplicateur.

Exemple :

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

Sortie :

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

Notez que nous avons mis à jour deux champs ; le bar champ et le extra champ (qui n'existait pas à l'origine).

Vérifions à nouveau le document :

db.foo.find()

Résultat :

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

Nous pouvons voir que la bar le champ a été multiplié par 3 , et un nouveau extra le champ a été ajouté et mis à 0 .

Types mixtes

La multiplication avec des valeurs de types numériques mixtes (entier 32 bits, entier 64 bits, flottant) peut entraîner la conversion du type numérique.

Voir la documentation MongoDB pour une explication.