MongoDB: Найти документ по несуществованию поля?

131

Есть ли способ указать условие "где документ не содержит поля"?

Например, я хочу найти только первое из этих 2, потому что у него нет поля "цена".

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


{"fruit":"banana", "color":"yellow", "price":"2.00"}
Теги:

1 ответ

207
Лучший ответ

Попробуйте оператор $exists:

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

и см. его документацию.

  • 9
    +1. Однако имейте в виду, что такие запросы не могут использовать индексацию и могут быть очень медленными в больших коллекциях.
  • 9
    Отличный момент - спасибо. Я знаю, что это предостережение относится к MongoDB версии 1.8.x и ранее; но я думал, что запросы с ограничениями поля $ Существуют теперь могут использовать индексы в версии 2.0 ...?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню