2013-06-05 22 views
1

是否有一種有效的方法來查找至少有一個嵌入對象缺少給定字段的Mongo集合的所有文檔?查找包含至少一個嵌入對象的文檔缺少給定字段

我想:

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

然而,這僅返回響應針對每一個答案,缺少question_id,而不是包含至少一個答案缺少question_id響應。

我可以通過Responses測試每個循環,但是這對於我正在使用的數據庫的大小來說非常慢,所以我很想找到一種方法來構建查詢以縮小響應列表。

編輯:

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

仍然不能解決我的問題 - 它仍然只用於找出所有嵌入式答案缺少question_id迴應,爲此,任何嵌入式答案缺少question_id不響應。

+0

有一個[FAQ條目(http://docs.mongodb.org/manual/faq/developers/#how-do-i-query-for-fields-that-have-null-values) 。 – jimoleary

+0

@jimoleary - 謝謝,但這是爲了找到帶有空字段的文檔,而不是包含至少一個包含空字段的嵌入對象的文檔 –

+0

對不起,我的初始響應是一個簡短的說明!請查看常見問題解答條目結尾處的$ exists操作符的說明。它描述瞭如何找到丟失的字段。 – jimoleary

回答

1

您是否嘗試過以下任一項?

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

謝謝! Response.where(:answers.elem_match => {:question_id => nil}) 的確如此。 –

相關問題