2012-02-04 2 views

ответ

2

Пока нет прямого эквивалента этой идиомы (набор поля к некоторой функции некоторых полей документа), есть способ сделать это точное обновление.

Model.collection.update({}, # find all documents 
         {'$inc' => {:position => -1}}, # decrement position 
         :multi => true) # multi-update (update all) 

Это использование основного драйвера mongodb для выполнения этой работы. Я не знаю, как выразить это в интерфейсе Mongoid.

+0

Не всегда работает. Он говорит, что метод обновления должен иметь только 3 параметра. – xpepermint

+0

Ах, извините, это было половина рубина, половина javascript. Обновлено. –

0

Уверен, что вы можете! Без выбора (обновить все коллекции):

Model.update_all(obsolete: false) 

или с выбором:

Model.where(:id.in => ids_array).update_all(obsolete: true) 
Смежные вопросы