mongodb中的空字段计数

mongodb中的空字段计数,mongodb,mongodb-query,Mongodb,Mongodb Query,是否可以计算mongodb中有多少字段等于null 我不是问一个字段(具有具体名称)在集合中为null的次数,而是问文档中有多少个字段(通配符名称)等于null。我试图得到的是整个集合中等于null的平均字段数。您可以在3.4中的聚合下面进行尝试 $objectToArray返回文档中的所有键和值对,然后是$unwind将整个集合中具有键-值对和$group的每个文档展平为多个文档,以检查所有字段值是否为空,并$sum累积值 $cond查询条件为空时输出1,否则为0$$ROOT以访问整个文档 d

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


我不是问一个字段(具有具体名称)在集合中为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()