Ruby on rails 3 mongoid';存在';don';I don’我没有按预期工作

Ruby on rails 3 mongoid';存在';don';I don’我没有按预期工作,ruby-on-rails-3,mongoid,Ruby On Rails 3,Mongoid,嗨,我正在尝试一个查询,结果很奇怪。我试图得到一个对象列表,其中一个字段不存在,并且添加了where子句 第一步where条款: ContentMirror.where(source: 'some_source').count 此查询返回9984条记录。 一些源代码有一个字段调用vid\u emded\u obj,我知道有些是nil,例如: ContentMirror.find('50fff286781200986e000ae3') => #<ContentMirror _id:

嗨,我正在尝试一个查询,结果很奇怪。我试图得到一个对象列表,其中一个字段不存在,并且添加了where子句

第一步where条款:

ContentMirror.where(source: 'some_source').count
此查询返回9984条记录。
一些源代码有一个字段调用
vid\u emded\u 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"> 

无法找出原因…

I belkieve of exists检查属性是否存在,如果该属性的值为空,则返回true。 我会去找医生确认:)

编辑:

因此,文档没有提到任何存在(…)。 只有一个存在?可应用于条件的方法

我认为您应该这样做(伪代码,我还没有尝试过)

还是

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

谢谢你的回答。我从这里得到了医生:我试了两个(第一个不起作用)。他们都返回了9984的计数,这与我在没有vid_embed_obj字段的情况下进行计数相同。文档是否包含vid_embed_obj字段?或者这个字段根本就不是文档的一部分?很抱歉回复太晚。Stephane vid_embed_obj确实存在,因为“某些源”的字段仅为零,而“其他源”的字段不为零
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