2015-09-14 2 views
1

Я использую драйвер Ruby MongoDB для взаимодействия с базой данных Mongo из приложения Sinatra. Я выполняю некоторые массовые операции обновления, и мне нужно обновить значение поля документа, основанное на текущем значении поля в найденном документе.Ruby/Mongo bulk update dyamic value from * found * document

Я хотел бы сделать что-то вроде этого:

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

ли такой подход можно? Я понимаю, что могу заранее найти все значения, а затем выполнить обновление, но во многих отношениях, которые побеждают цель объемной операции.

ответ

0

Вы можете попробовать следующее, что работало для меня в прошлом с массовыми операциями :

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

Источник: https://docs.mongodb.com/manual/reference/operator/update/inc/

+0

Это очень полезно, надеюсь, поможет кому-то с той же проблемой в будущем, как я далек от проекта я отправил о прошлом году. – Kevin