Как искать документы в коллекции, которые отсутствуют в определенном поле в MongoDB?
Mongo: найдите элементы, которые не имеют определенного поля
Ответ 1
Да, возможно использование $exists:
db.things.find( { a : { $exists : false } } ); // return if a is missing
Когда значение true, $существует, совпадает с документами, которые содержат это поле, включая документы, где значение поля равно null. Если false, запрос возвращает только документы, которые не содержат поля.
Ответ 2
Если вам не интересно, если поле отсутствует или null
(или если оно никогда не null
), вы можете использовать немного короче и безопаснее:
db.things.find( { a : null } ); // return if a is missing or null
Это безопаснее, потому что $exists
вернет true
, даже если поле равно null, что часто не является желаемым результатом и может привести к NPE.