如何通过';未定义';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},
}
})