Mongoid:如何查询value为nil的所有对象?

ran*_*its 12 ruby-on-rails mongodb mongoid

我很难做一些事情,比如:

Something.where(:field => nil) 
Run Code Online (Sandbox Code Playgroud)

要么

Something.where(:field => { '$eq' => nil })
Run Code Online (Sandbox Code Playgroud)

什么是在Mongoid中处理这个问题的正确方法?

Joh*_*lla 19

这是正确的方法.nil例如,要找到发动机的汽车,请使用:

# Cars that have a _nil_ engine.
Car.where(:engine => nil)
Run Code Online (Sandbox Code Playgroud)

如果您正在尝试查找缺少字段(而不是设置的字段nil),请使用$exists谓词:

# Cars that lack an engine entirely.
Car.where(:engine.exists => false)
Run Code Online (Sandbox Code Playgroud)

请注意,将字段设置foonil并且缺少指定的字段foo是两个不同的事情.