【发布时间】:2012-01-22 17:29:48
【问题描述】:
我在做以下事情时遇到了困难:
Something.where(:field => nil)
或
Something.where(:field => { '$eq' => nil })
在 Mongoid 中处理这个问题的正确方法是什么?
【问题讨论】:
标签: ruby-on-rails mongodb mongoid
我在做以下事情时遇到了困难:
Something.where(:field => nil)
或
Something.where(:field => { '$eq' => nil })
在 Mongoid 中处理这个问题的正确方法是什么?
【问题讨论】:
标签: ruby-on-rails mongodb mongoid
这是正确的做法。例如,要查找发动机为 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 的字段是两件事。
【讨论】:
:engine 是否存在或是否为nil,条件where(engine: nil) 都匹配。