Ответ 1
Если вы хотите отфильтровать документы с отсутствующими полями, используйте оператор $exists
.
Это работает на моей машине:
> db.test.drop()
true
> db.test.insert( {'Hello':'World!', 'myField':42})
> db.test.insert( {'Hello again':'World!'})
> db.test.aggregate({'$match':{ 'myField':{'$exists':false} }})
{
"result" : [
{
"_id" : ObjectId("51b9cd2a6c6a334430ec0c98"),
"Hello again" : "World!"
}
],
"ok" : 1
}
Документ, в котором присутствует myField, не отображается в результатах.