2011-12-19 14 views
130

"文書にはフィールドが含まれていない場所"の条件を指定する方法はありますか?MongoDB:フィールドが存在しないことで文書を検索しますか?

たとえば、「価格」フィールドがないため、これら2つのうち最初のものだけを探したいとします。

{"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以前でも当てはまります。 $ 2.0のクエリではフィールド制約が存在するため、バージョン2.0でインデックスを使用できるようになりました。 – dampier

+5

本当に可能です。ありがとう!私は最新ではなかったようだ。 – mnemosyn

関連する問題