MongoDB a un $inc
opérateur de mise à jour de champ qui vous permet d'incrémenter une valeur d'un montant spécifique.
Vous pouvez utiliser des valeurs positives et négatives (c'est-à-dire pour incrémenter ou décrémenter la valeur).
Si le champ n'existe pas déjà, il est créé avec la valeur spécifiée.
Exemple
Supposons que nous ayons une collection appelée dogs
avec le document suivant :
{ "_id" : 1, "name" : "Wag", "weight" : 10 }
Ici, le weight
champ contient une valeur qui peut être incrémentée ou décrémentée.
Incrémenter
Nous pouvons utiliser le $inc
opérateur en conjonction avec le update()
méthode pour augmenter le poids de ce chien.
Comme ceci :
db.dogs.update(
{ _id: 1 },
{ $inc: { weight: 5 } }
)
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.dogs.find()
Résultat :
{ "_id" : 1, "name" : "Wag", "weight" : 15 }
Nous pouvons voir que le poids du chien a augmenté de 5.
Décrémenter
Vous pouvez décrémenter la valeur en fournissant une valeur négative au $inc
opérateur.
Comme ceci :
db.dogs.update(
{ _id: 1 },
{ $inc: { weight: -5 } }
)
Sortie :
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Vérifiez la collection :
db.dogs.find()
Résultat :
{ "_id" : 1, "name" : "Wag", "weight" : 10 }
Nous pouvons voir que le poids a maintenant été décrémenté de 5.
Incrémenter un champ qui n'existe pas
Lorsque vous incrémentez un champ qui n'existe pas dans le document, le champ est ajouté et reçoit la valeur spécifiée.
Exemple :
db.dogs.update(
{ _id: 1 },
{ $inc: { weight: 1, height: 30 } }
)
Sortie :
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Notez que nous avons mis à jour deux champs ; le weight
champ et la height
champ (qui n'existait pas à l'origine).
Vérifions à nouveau le document :
db.dogs.find()
Résultat :
{ "_id" : 1, "name" : "Wag", "weight" : 11, "height" : 30 }
Nous pouvons voir que le weight
le champ a été incrémenté de 1
, et une nouvelle height
le champ a été ajouté avec la valeur spécifiée de 30
.