计算mongodb中的空字段

时间:2018-01-11 15:11:50

标签: mongodb mongodb-query

是否可以计算mongodb中有多少字段等于null?

我不是要求集合中具有多少次字段(具体名称)为空,而是要求文档中有多少字段(通配符名称)等于null。我想要得到的是整个集合中等于null的平均字段数。

2 个答案:

答案 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()