MongoDB:フィールドが存在しないことでドキュメントを検索しますか?


173

「ドキュメントにフィールドが含まれていない」という条件を指定する方法はありますか?

たとえば、「price」フィールドがないため、最初の2つだけを検索します。

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


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


3
あなたも試すことができますdb.mycollection.find({ "price" : null })
evilReiko

回答:


329

$existsオペレーターを試してください:

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

そのドキュメントを参照してください。


12
+1。ただし、そのようなクエリはインデックス作成を使用できず、大きなコレクションでは非常に遅くなる可能性があることに注意してください。
mnemosyn 2011

10
素晴らしい点-ありがとう。この警告がMongoDBバージョン1.8.x以前でも当てはまることは知っています。しかし、$ existsフィールド制約のあるクエリがバージョン2.0のインデックスを利用できるようになったと思いました...?
ダンピア2011
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.