查找包含至少一个缺少给定字段的嵌入对象的文档

时间:2013-06-05 18:20:47

标签: ruby mongodb mongoid

是否有一种有效的方法来查找至少有一个嵌入对象缺少给定字段的Mongo集合的所有文档?

我正在尝试:

Response.where('answers.question_id' => nil)

但是,这只会返回每个答案都缺少question_id的响应,而不是包含至少一个错过question_id的答案的响应。

我可以遍历每个响应测试,但这对我正在使用的数据库的大小来说非常慢,所以我很想找到一种方法来构建一个查询来缩小响应列表。

编辑:

Response.where(:'answers.question_id'.exists => false)

仍然无法解决我的问题 - 它仍然只能找到所有嵌入式答案缺少问题_id的响应,而不是任何嵌入式答案缺少问题_id的响应。< / p>

1 个答案:

答案 0 :(得分:1)

您是否尝试过以下任何一项?

Response.where(:answers => { "$elemMatch" => { :"answer_id".exists => false }})
Response.where(:answers.elem_match => { :answer_id.exists => false})