mongodb中的空字段计数
是否可以计算mongodb中有多少字段等于nullmongodb中的空字段计数,mongodb,mongodb-query,Mongodb,Mongodb Query,是否可以计算mongodb中有多少字段等于null 我不是问一个字段(具有具体名称)在集合中为null的次数,而是问文档中有多少个字段(通配符名称)等于null。我试图得到的是整个集合中等于null的平均字段数。您可以在3.4中的聚合下面进行尝试 $objectToArray返回文档中的所有键和值对,然后是$unwind将整个集合中具有键-值对和$group的每个文档展平为多个文档,以检查所有字段值是否为空,并$sum累积值 $cond查询条件为空时输出1,否则为0$$ROOT以访问整个文档 d
我不是问一个字段(具有具体名称)在集合中为null的次数,而是问文档中有多少个字段(通配符名称)等于null。我试图得到的是整个集合中等于null的平均字段数。您可以在3.4中的聚合下面进行尝试
$objectToArray
返回文档中的所有键和值对,然后是$unwind
将整个集合中具有键-值对和$group
的每个文档展平为多个文档,以检查所有字段值是否为空,并$sum
累积值
$cond
查询条件为空时输出1,否则为0$$ROOT
以访问整个文档
db.col.aggregate([
{"$project":{
"arrayofkeyvalue":{"$objectToArray":"$$ROOT"}
}},
{"$unwind":"$arrayofkeyvalue"},
{"$group":{
"_id":null,
"count":{"$sum":{"$cond":[{"$eq":["$arrayofkeyvalue.v",null]},1,0]}}
}}
])
如果您有这样的数据: : 您可以使用以下代码解决此问题:
db.collection.find({$and: [{tripduration: null}, {tripduration: {$exists: true}}]}).count()
谢谢,我已经尝试过了,mongod 3.4.1报告了以下消息“无法识别的表达式“$objectToArray”。我尝试了一个更简单的查询:db.coll.aggregate([{“$project”:{“arrayofkeyvalue”:{“$objectToArray”:“$$ROOT”}}}]),错误是相同的。有什么想法吗?不客气。是的,你能试试最新的3.4吗?ObjectToArray a可从3.4.4获得
db.collection.find({$and: [{tripduration: null}, {tripduration: {$exists: true}}]}).count()