A documentação do método de atualização do MongoDB afirma o seguinte:
Então, basicamente, o
multi
parâmetro é o que habilita o update_all
comportamento na pergunta que você vinculou. Em resposta à sua segunda pergunta:sim - o Mongoid tem esse recurso embutido agora. A referência da documentação está aqui . Mas você pode usar assim:
User.where(:gender => "Male").update_all(:title => "Mr")
Atualizar
No caso em que você deseja inserir um valor em um campo de matriz, ainda precisará usar a biblioteca MongoDB diretamente, pois o
update_all
do Mongoid O método suporta apenas o $set
método de atualização do banco de dados (que pode ser usado para atualizar uma matriz inteira, mas não enviar valores para ela). O exemplo na resposta à pergunta à qual você vinculou funcionaria, copiei-o abaixo daqueles que se deparam com essa pergunta (obrigado shingara !):
User.collection.update(
{'$in' => {:gender => 'Male'}},
{'$push' => {:titles => 'Mr'}},
{:multi => true}
)