您好我正在尝试查询并给我奇怪的结果。我试图得到一个对象列表,其中一个字段不存在,并添加了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
无法理解为什么......
答案 0 :(得分:0)
我相信存在会检查属性是否存在,如果该属性的值为空,则返回true。 我将去找医生确认:)
编辑:
所以,doc没有提到任何存在(...)。 只存在?可以应用于标准的方法。
我认为你应该这样做(伪代码,我还没试过)
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