我需要读取文档并以原子方式递增值。我知道ReactiveMongo提供了FindAndModify
并查看了this example。如果您查看示例中的findAndModify
方法,您会看到它只是找到与条件匹配的文档,然后使用新值更新它们。
如何根据旧值设置新值?换句话说,我需要读取一个值,增加它,并最终更新文档[atomically]:
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))