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

Ruby 查找包含至少一个缺少给定字段的嵌入对象的文档,ruby,mongodb,mongoid,Ruby,Mongodb,Mongoid,是否有一种有效的方法来查找Mongo集合中至少有一个嵌入对象缺少给定字段的所有文档 我正在努力: Response.where('answers.question_id' => nil) 但是,这只返回每个答案都缺少问题id的响应,而不是包含至少一个答案缺少问题id的响应 我可以对每个响应进行循环测试,但这对于我正在使用的数据库的大小来说是非常缓慢的,因此我渴望找到一种方法来构造一个查询以缩小响应列表 编辑: 仍然不能解决我的问题-它仍然只查找所有嵌入答案都缺少问题id的响应,而不查找任

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

我正在努力:

Response.where('answers.question_id' => nil)
但是,这只返回每个答案都缺少问题id的响应,而不是包含至少一个答案缺少问题id的响应

我可以对每个响应进行循环测试,但这对于我正在使用的数据库的大小来说是非常缓慢的,因此我渴望找到一种方法来构造一个查询以缩小响应列表

编辑:


仍然不能解决我的问题-它仍然只查找所有嵌入答案都缺少问题id的响应,而不查找任何嵌入答案缺少问题id的响应。

您尝试过以下任一方法吗

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

你试过以下两种方法吗

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

这里有一个@jimolery-谢谢,但这是为了查找包含空字段的文档,而不是包含至少一个包含空字段的嵌入对象的文档抱歉,我最初的回答有点简洁!查看FAQ条目末尾的$exists运算符说明。它描述了如何查找缺少的字段。这里有一个@jimolery-谢谢,但这是为了查找包含空字段的文档,而不是包含至少一个包含空字段的嵌入对象的文档抱歉,我最初的回答有点简洁!查看FAQ条目末尾的$exists运算符说明。它描述了如何查找缺少的字段。谢谢!响应。其中(:answers.elem_match=>{:question_id=>nil})完全符合我的要求。谢谢!其中(:answers.elem_match=>{:question_id=>nil})完全符合我的要求。