【问题标题】:Mongoid: how to query for all objects where value is nil?Mongoid:如何查询值为 nil 的所有对象?
【发布时间】:2012-01-22 17:29:48
【问题描述】:

我在做以下事情时遇到了困难:

Something.where(:field => nil) 

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

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

【问题讨论】:

    标签: ruby-on-rails mongodb 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 的字段是两件事。

    【讨论】:

    • 另请注意,如果 :engine 是“[a, b, c, nil]”形式的数组,则 where 子句“:engine => nil”将匹配这些行。
    • 对我而言,无论:engine 是否存在或是否为nil,条件where(engine: nil) 都匹配。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-07
    • 1970-01-01
    • 2016-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多