如何通过';未定义';MongoDB聚合框架中的价值?

如何通过';未定义';MongoDB聚合框架中的价值?,mongodb,aggregation-framework,nosql,Mongodb,Aggregation Framework,Nosql,如何在具有未定义值的字段中搜索记录筛选: db.records.aggregate({ $match: { myField: "undefined", } }) 如果要筛选出缺少某些字段的文档,请使用运算符 这在我的机器上工作: > db.test.drop() true > db.test.insert( {'Hello':'World!', 'myField':42}) > db.test.insert( {'Hello again':'W

如何在具有
未定义值的
字段中搜索记录筛选

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

如果要筛选出缺少某些字段的文档,请使用运算符

这在我的机器上工作:

> 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的文档不会显示在结果中。

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


如果有字段存在但未定义,则可以使用null搜索这些字段

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

如何定义未定义的?你是说什么?如果可能,添加一个示例文档和一个将返回该文档的常规查询。看看你的问题,
'undefined'
是一个字符串,就像
'Hello,World!'
。该运算符还可用于搜索具有
null
值的字段(还有一种已弃用的
undefined
类型)。此条目解释了查询空值和/或缺少的字段(聚合框架中提供了相同的运算符)。例如:
db.test.aggregate({'$match':{'myField':{'$type':10}}})
将匹配定义了
myField
但其值为
null的文档。谢谢。被接受的答案似乎并没有真正回答这个问题,但这确实回答了问题,而且非常有用,因为如果你试图搜索
未定义的
,它会告诉你不能。
db.records.aggregate({
    $match: {
        myField: {$exists: true, $eq: null},
    }
})