Ich muss ein Dokument lesen und einen Wert atomar erhöhen. Ich weiß, ReactiveMongo bietet FindAndModify
und schaute zu Dieses Beispiel. Wenn Sie auf die findAndModify
Methode im Beispiel werden Sie feststellen, dass nur die Dokumente gefunden werden, die mit einer Bedingung übereinstimmen, und sie dann mit einem neuen Wert aktualisiert werden.
Wie stelle ich einen neuen Wert basierend auf dem alten ein? Mit anderen Worten, ich muss einen Wert lesen, inkrementieren und schließlich das Dokument [atomar] aktualisieren:
def incrementValue() = {
val selector = BSONDocument("name" -> "Joe")
val modifier = BSONDocument(
"$set" -> BSONDocument("version" -> ???)) // how do I increment the old
// value of "version" by 1?
val command = FindAndModify(
collection.name,
selector,
Update(modifier, false))
Antworten:
2 für die Antwort № 1Benutzen $inc
Anstatt von $set
. Hier finden Sie die Dokumentation. Natürlich funktioniert es auch mit findAndModify
.