2011-12-19 93 views
130

有沒有辦法指定「哪裏文檔不包含字段」的條件?MongoDB:通過不存在字段來查找文檔?

例如,我只想找到這兩個中的第一個,因爲它沒有「價格」字段。

{"fruit":"apple", "color":"red"} 


{"fruit":"banana", "color":"yellow", "price":"2.00"} 
+0

[Mongo:查找沒有特定字段的項目]的可能重複(http://stackoverflow.com/questions/5719408/mongo-find-items-that-dont-have-a-certain-field ) –

+2

您也可以嘗試'db.mycollection.find({「price」:null})' – evilReiko

回答

229

嘗試$exists操作:

db.mycollection.find({ "price" : { "$exists" : false } }) 

its documentation

+6

+1。但是,請記住,這樣的查詢不能使用索引,並且可能對大型集合非常緩慢。 – mnemosyn

+7

偉大的觀點 - 謝謝。我知道這個警告在MongoDB版本1.8.x和之前成立;但我認爲使用$ exists字段約束的查詢現在可以使用2.0版中的索引...? – dampier

+5

確實 - 他們可以。謝謝!似乎我沒有及時更新。 – mnemosyn

相關問題