Mongoid: как запросить для всех объектов, где значение равно нулю?

Мне сложно делать что-то вроде:

Something.where(:field => nil) 

или

Something.where(:field => { '$eq' => nil })

Какой правильный способ справиться с этим в Mongoid?

Ответ 1

Это правильный способ сделать это. Чтобы найти автомобили с двигателем nil, например, используйте:

# Cars that have a _nil_ engine.
Car.where(:engine => nil)

Если вы пытаетесь найти отсутствие поля (а не того, которое установлено в nil), используйте предикат $exists:

# Cars that lack an engine entirely.
Car.where(:engine.exists => false)

Обратите внимание, что установка поля foo как nil и отсутствие поля с именем foo - это две разные вещи.