Возможны ли это с Rails + Mongoid:Rails + mongoid: update_all ("position = position-1")?
Model.update_all("position=position-1")
Возможны ли это с Rails + Mongoid:Rails + mongoid: update_all ("position = position-1")?
Model.update_all("position=position-1")
Пока нет прямого эквивалента этой идиомы (набор поля к некоторой функции некоторых полей документа), есть способ сделать это точное обновление.
Model.collection.update({}, # find all documents
{'$inc' => {:position => -1}}, # decrement position
:multi => true) # multi-update (update all)
Это использование основного драйвера mongodb для выполнения этой работы. Я не знаю, как выразить это в интерфейсе Mongoid.
Уверен, что вы можете! Без выбора (обновить все коллекции):
Model.update_all(obsolete: false)
или с выбором:
Model.where(:id.in => ids_array).update_all(obsolete: true)
Это работает:
Model.all.inc(:position, -1)
Не всегда работает. Он говорит, что метод обновления должен иметь только 3 параметра. – xpepermint
Ах, извините, это было половина рубина, половина javascript. Обновлено. –