ReactiveMongo:如何使用FindAndModify读取文档并以原子方式递增值

时间:2014-02-03 08:50:00

标签: mongodb scala reactivemongo

我需要读取文档并以原子方式递增值。我知道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))

1 个答案:

答案 0 :(得分:2)

使用$inc代替$set。在这里你可以找到documentation。当然它也适用于findAndModify