MongoDB hat einen $inc
Feldaktualisierungsoperator, mit dem Sie einen Wert um einen bestimmten Betrag erhöhen können.
Sie können positive und negative Werte verwenden (d. h. um den Wert zu erhöhen oder zu verringern).
Wenn das Feld noch nicht existiert, wird es mit dem angegebenen Wert erstellt.
Beispiel
Angenommen, wir haben eine Sammlung namens dogs
mit folgendem Dokument:
{ "_id" : 1, "name" : "Wag", "weight" : 10 }
Hier das weight
Feld enthält einen Wert, der erhöht oder verringert werden kann.
Inkrement
Wir können den $inc
verwenden Operator in Verbindung mit update()
Methode, um das Gewicht dieses Hundes zu erhöhen.
So:
db.dogs.update(
{ _id: 1 },
{ $inc: { weight: 5 } }
)
Ausgabe:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Dies sagt uns, dass ein Dokument abgeglichen und geändert wurde.
Sehen wir uns die Sammlung noch einmal an:
db.dogs.find()
Ergebnis:
{ "_id" : 1, "name" : "Wag", "weight" : 15 }
Wir können sehen, dass sich das Gewicht des Hundes um 5 erhöht hat.
Verringern
Sie können den Wert verringern, indem Sie $inc
einen negativen Wert zuweisen Betreiber.
So:
db.dogs.update(
{ _id: 1 },
{ $inc: { weight: -5 } }
)
Ausgabe:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Überprüfen Sie die Sammlung:
db.dogs.find()
Ergebnis:
{ "_id" : 1, "name" : "Wag", "weight" : 10 }
Wir können sehen, dass das Gewicht jetzt um 5 verringert wurde.
Erhöhen Sie ein nicht vorhandenes Feld
Wenn Sie ein Feld erhöhen, das im Dokument nicht vorhanden ist, wird das Feld hinzugefügt und ihm der angegebene Wert zugewiesen.
Beispiel:
db.dogs.update(
{ _id: 1 },
{ $inc: { weight: 1, height: 30 } }
)
Ausgabe:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Beachten Sie, dass wir zwei Felder aktualisiert haben; das weight
Feld und die height
Feld (das ursprünglich nicht existierte).
Sehen wir uns das Dokument noch einmal an:
db.dogs.find()
Ergebnis:
{ "_id" : 1, "name" : "Wag", "weight" : 11, "height" : 30 }
Wir können das weight
sehen Feld wurde um 1
erhöht , und eine neue height
Feld mit dem angegebenen Wert von 30
hinzugefügt wurde .