MongoDB: Знайдіть документ за відсутністю поля?


173

Чи є спосіб вказати умову "там, де документ не містить поля"?

Наприклад, я хочу знайти лише перше з цих 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

10
Відмінний момент - спасибі. Я знаю, що цей застереження справедливо у версії MongoDB 1.8.x і раніше; але я думав, що запити з $ існує обмеженнями поля тепер можуть використовувати індекси у версії 2.0 ...?
демпфер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.