Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 当前字段上的聚合条件计数_Mongodb_Mongodb Query_Aggregation Framework - Fatal编程技术网

Mongodb 当前字段上的聚合条件计数

Mongodb 当前字段上的聚合条件计数,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,我正在尝试编写一个聚合,计算有多少文档具有特定字段(即仅当它们存在时才计算)。这些对象看起来像这样: { "_id" : ObjectId("5617731fe65e0b19101c7039"), "dateCreated" : ISODate("2015-10-09T07:56:15.068Z"), "dateSent" : ISODate("2015-10-09T07:56:16.682Z"), "dateAttempted"

我正在尝试编写一个聚合,计算有多少文档具有特定字段(即仅当它们存在时才计算)。这些对象看起来像这样:

{
        "_id" : ObjectId("5617731fe65e0b19101c7039"),
        "dateCreated" : ISODate("2015-10-09T07:56:15.068Z"),
        "dateSent" : ISODate("2015-10-09T07:56:16.682Z"),
        "dateAttempted" : ISODate("2015-10-09T07:56:16.682Z")
},
{
        "_id" : ObjectId("561e37bb537d381bb0ef0ae2"),
        "dateCreated" : ISODate("2015-10-14T11:08:43.306Z"),
        "dateSent" : ISODate("2015-10-14T11:09:51.618Z"),
        "dateAttempted" : ISODate("2015-10-14T11:09:51.618Z"),
        "dateViewed" : ISODate("2015-10-15T10:09:50.618Z"),
        "dateOpened" : ISODate("2015-10-15T10:10:01.618Z")
}
我想迭代所有文档,计算字段存在的位置。期望输出:

{
        "total" : 1000,
        "created" : 1000,
        "sent" : 990,
        "attempted" : 995
        "viewed" : 800,
        "opened" : 750
}
如果此输出可以每天分组,则可获得额外积分!我不希望对范围内的每个日期执行新的聚合

这是我到目前为止所拥有的,但不起作用;它为每个字段返回零

[
  {
    "$group": {
      "_id": {
        "$dayOfMonth": "$dateCreated"
      },
      "total": {
        "$sum": 1
      },
      "sent": {
        "$sum": "$dateSent"
      },
      "attempted": {
        "$sum": "$dateAttempted"
      },
      "viewed": {
        "$sum": "$dateViewed"
      },
      "clicked": {
        "$sum": "$dateClicked"
      }
    }
  }
]
和操作员是此处的助手:

[
{
“$group”:{
“_id”:{
$dayOfMonth:“$dateCreated”
},
“总数”:{
“$sum”:1
},
“已发送”:{
“$sum”:{“$cond”:[{“$ifNull”:[“$dateSent”,false]},1,0]}
},
“未遂”:{
“$sum”:{“$cond”:[{“$ifNull”:[“$dateAttempted”,false]},1,0]}
},
“已查看”:{
“$sum”:{“$cond”:[{“$ifNull”:[“$dateViewed”,false]},1,0]}
},
“单击”:{
“$sum”:{“$cond”:[{“$ifNull”:[“$dateClicked”,false]},1,0]}
}
}
}
]
$ifNull
将返回存在的字段(逻辑
true
)或替代值
false
$cond
查看此条件并返回
1
where
true
0
where false以提供条件计数