Mongo: найдите элементы, которые не имеют определенного поля

Как искать документы в коллекции, которые отсутствуют в определенном поле в MongoDB?

Ответ 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.