如何匹配MongoDB Aggregation Framework中的'undefined'值?

时间:2013-06-13 13:16:46

标签: mongodb aggregation-framework nosql

如何搜索> 值<{1}}字段中的记录:

undefined

3 个答案:

答案 0 :(得分:29)

$type:6,(mongodb referece过滤它,请注意此类型标记为“已弃用”):

db.records.aggregate({
    $match: {
        myField: {'$type':6},
    }
})

答案 1 :(得分:22)

如果要过滤掉缺少某些字段的文档,请使用$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 :(得分:0)

如果字段存在但未定义,则可以使用null进行搜索。

db.records.aggregate({
    $match: {
        myField: {$exists: true, $eq: null},
    }
})