Как сопоставить значение 'undefined' в структуре агрегации MongoDB? Как я могу искать фильтрацию записей в поле со значением undefined: db.records.aggregate({ $match: { myField: "undefined", } }) Ответ 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, не отображается в результатах. Ответ 2 Отфильтруйте его $type:6, (mongodb referece, обратите внимание, что этот тип помечен как "устаревший" ): db.records.aggregate({ $match: { myField: {'$type':6}, } })
Ответ 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, не отображается в результатах.
Ответ 2 Отфильтруйте его $type:6, (mongodb referece, обратите внимание, что этот тип помечен как "устаревший" ): db.records.aggregate({ $match: { myField: {'$type':6}, } })