20

如何具有undefined值的字段中搜索记录过滤:

db.records.aggregate({
    $match: {
        myField: "undefined",
    }
})
4

3 回答 3

51

$type:6, ( mongodb referece ,请注意此类型标记为 'deprecated' ) 过滤它:

db.records.aggregate({
    $match: {
        myField: {'$type':6},
    }
})
于 2014-05-30T06:52:54.323 回答
25

如果要过滤掉缺少某些字段的文档,请使用$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 的文档不会显示在结果中。

于 2013-06-13T13:48:59.070 回答
1

如果您有存在但未定义的字段,您可以使用 null 搜索它们。

db.records.aggregate({
    $match: {
        myField: {$exists: true, $eq: null},
    }
})
于 2020-06-19T15:37:10.470 回答