Если я правильно понимаю ваш вопрос:
db.things.insert({a: null, b: 1});
db.things.insert({b: 2});
db.things.find({$and:[{a: null }, {a: {$exists: true}}]});
Вывод:
{ "_id" : ObjectId("5b0efa710d9b6861ee36052e"), "a" : null, "b" : 1 }
Но остерегайтесь следующего:
db.things1.insert({a: null, b: 1});
db.things1.insert({b: 2});
db.things1.insert({ a: undefined, b: 3 });
db.things1.find({$and:[{a: null }, {a: {$exists: true}}]});
Вывод:
{ "_id" : ObjectId("5b0efe730d9b6861ee360531"), "a" : null, "b" : 1 }
{ "_id" : ObjectId("5b0efe7b0d9b6861ee360533"), "a" : undefined, "b" : 3 }
Справочный текст для прочтения для второй части: « MongoDB различает между неопределенным и нулевым » и, возможно, «https://jira.mongodb.org/browse/SERVER-6102"