是否可以计算mongodb中有多少字段等于null?
我不是要求集合中具有多少次字段(具体名称)为空,而是要求文档中有多少字段(通配符名称)等于null。我想要得到的是整个集合中等于null的平均字段数。
答案 0 :(得分:2)
您可以在3.4
中尝试以下聚合 $objectToArray
返回文档中的所有键值和值对,后跟$unwind
以展开多个文档,每个文档都使用键值对,并在整个集合中$group
进行检查null的所有字段值和$sum
累积值。
$cond
,当为null时输出1,否则为0. $$ROOT
以访问整个文档。
db.col.aggregate([
{"$project":{
"arrayofkeyvalue":{"$objectToArray":"$$ROOT"}
}},
{"$unwind":"$arrayofkeyvalue"},
{"$group":{
"_id":null,
"count":{"$sum":{"$cond":[{"$eq":["$arrayofkeyvalue.v",null]},1,0]}}
}}
])
答案 1 :(得分:0)
如果您有这样的数据:
:
*{"_id":{"$oid":"572bb8222b288919b68adfa5"},
"tripduration":null,
"start station id":279,
"start station name":"Peck Slip & Front St",
"end station id":268,
"end station name":"Howard St & Centre St",
"bikeid":22820,
"usertype":"Customer",
"birth year":"","gender":0,
....
...
您可以使用以下代码解决问题:
db.collection.find({$and: [{tripduration: null}, {tripduration: {$exists: true}}]}).count()