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 .