Ruby / Mongo批量更新来自* found *文档的动态值

时间:2015-09-14 23:49:10

标签: ruby-on-rails ruby mongodb sinatra

我正在使用Ruby MongoDB驱动程序与Sinatra应用程序中的Mongo数据库进行交互。我正在执行一些批量更新操作,我需要根据找到的文档中字段的当前值更新文档字段的值。

我想做这样的事情:

my_bulk_op.find({
    'foo' => 'bar'
}).update({
    '$set' => {
        'my_field' => my_field += 1 # how can I get my_field's current value here?
    }
})

这种方法可行吗?我意识到我可以预先找到所有值然后执行更新,但是在很多方面都违背了批量操作的目的

1 个答案:

答案 0 :(得分:0)

您可以尝试使用以下批量操作的以下内容:

my_bulk_op.find({
  'foo' => 'bar'
}).update({
  '$inc' => {
    'my_field' => 1
  }
})

来源:https://docs.mongodb.com/manual/reference/operator/update/inc/