Монго: найти предметы, которые не имеют определенного поля - PullRequest
104 голосов
/ 19 апреля 2011

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

Ответы [ 2 ]

164 голосов
/ 19 апреля 2011

Да, это возможно, используя $ существующие :

db.things.find( { a : { $exists : false } } ); // return if a is missing

Когда значение true, $ существует соответствует документам, которые содержат поле, включая документы, в которых значение поля равно нулю.Если значение равно false, запрос возвращает только те документы, которые не содержат поле.

50 голосов
/ 30 ноября 2012

Если вам все равно, пропущено ли поле или null (или если оно никогда не null), вы можете использовать более короткие и более безопасные:

db.things.find( { a : null } ); // return if a is missing or null

Это безопаснее, потому что $exists вернет true, даже если поле пустое, что часто не является желаемым результатом и может привести к NPE.

...