【问题标题】:Ruby/Mongo bulk update dyamic value from *found* documentRuby/Mongodb 批量更新 *found* 文档中的动态值
【发布时间】:2016-05-18 16:58:35
【问题描述】:

我正在使用 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?
    }
})

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

【问题讨论】:

    标签: ruby-on-rails ruby mongodb sinatra


    【解决方案1】:

    您可以尝试以下在过去对我有用的批量操作:

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

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

    【讨论】:

    • 这真的很有用,希望将来能帮助其他人解决同样的问题,因为我与去年发布的项目相去甚远。
    猜你喜欢
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-26
    • 2011-05-25
    • 2023-04-02
    • 2012-02-12
    相关资源
    最近更新 更多