【问题标题】:mongoid 'exists' don't work as expectedmongoid“存在”没有按预期工作
【发布时间】:2013-01-30 11:28:26
【问题描述】:

您好,我正在尝试查询,但结果很奇怪。我正在尝试获取一个对象列表,其中添加了 where 子句的字段不存在。

第一步 where 子句:

ContentMirror.where(source: 'some_source').count

此查询返回 9984 条记录。 some_source 有一个现场电话vid_emded_obj 我知道有些是nil 例如:

ContentMirror.find('50fff286781200986e000ae3')
=> #<ContentMirror _id: 50fff286781200986e000ae3, _type: nil, created_at: 2012-12-15 13:12:22 UTC, updated_at: 2013-01-29 12:10:23 UTC, deleted_at: nil, title: "Introduction to Polynomials", vid_emded_obj: nil, media_type: "video", source: "some_source", thumbnail_url: nil, md5: "459173975a7fb145b3ca8b99e1c2ae78"> 

所以我期待如果我这样做,至少计数 1 会返回:

ContentMirror.where(source: 'some_source').exists(vid_emded_obj: false).count
=> 0

不知道为什么……

【问题讨论】:

    标签: ruby-on-rails-3 mongoid


    【解决方案1】:

    我相信存在检查属性是否存在,如果该属性的值为空,则返回 true。 我会去找医生确认一下:)

    编辑:

    所以,文档没有提到任何存在(...)。 只有一个存在吗?可以应用于条件的方法。

    我觉得你应该做(伪代码,我没试过)

    ContentMirror.count(vid_embed_obj:nil, source: 'some_source')
    

    ContentMirror.where(vid_embed_obj:nil, source: 'some_source').count
    

    或再次

    ContentMirror.excludes(vid_embed_obj:nil).where(source: 'some_source').count
    

    【讨论】:

    • 感谢您的回答。我从这里得到了文档:mongoid.org/en/origin/docs/selection.html
    • 我尝试了所有 2 个(第一个不起作用)。他们都返回了 9984 的计数,这与我在没有 vid_embed_obj 字段的情况下计数时相同。
    • 文档是否包含字段 vid_embed_obj?还是这个字段根本不是文档的一部分?
    • 抱歉回复晚了。 Stephane vid_embed_obj 确实存在,因为字段对于“some_source”只是 nil 而对于“other_source”则不是 nil
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-16
    • 1970-01-01
    • 2021-10-19
    • 2020-03-18
    • 2012-06-14
    • 2014-11-15
    • 1970-01-01
    相关资源
    最近更新 更多