Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.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
Node.js MongoDB节点-如何获得两个日期之间的值之和?_Node.js_Mongodb_Aggregate - Fatal编程技术网

Node.js MongoDB节点-如何获得两个日期之间的值之和?

Node.js MongoDB节点-如何获得两个日期之间的值之和?,node.js,mongodb,aggregate,Node.js,Mongodb,Aggregate,我有下面的代码片段,它将从特定日期的MongoDb集合中检索日期和计数。示例:检索日期,从2020年5月5日开始计数 ||日期| |计数|| |05-06-2020|4| |05-07-2020 | 25 |等等 我想添加另一个逻辑来检索7天的总和,而不是单个日期。谢谢你的帮助 mongoClient.db().collection(COLLECTION.AUDIT).aggregate([ { $match: { created_at: { $g

我有下面的代码片段,它将从特定日期的MongoDb集合中检索日期和计数。示例:检索日期,从2020年5月5日开始计数

||日期| |计数|| |05-06-2020|4| |05-07-2020 | 25 |等等

我想添加另一个逻辑来检索7天的总和,而不是单个日期。谢谢你的帮助

    mongoClient.db().collection(COLLECTION.AUDIT).aggregate([
        {
            $match: { created_at: { $gt: date } }
        },
        {
            $group: {
                _id: {
                    $dateToString: { format: "%Y-%m-%d", date: "$created_at" }
                },
                count: { $sum: 1 }
            }
        },
        {
            $sort: { "_id": -1 }
        }
    ])

最简单的方法就是将您的组操作符转换为$week,而不是$dateToString。因为一周是7天,这将对同一周的所有文档进行分组,并返回文档计数以及一周的数量。要从一个查询中获得两个结果,请将它们组合到一个方面中。因此:

mongoClient.db().collection(COLLECTION.AUDIT).aggregate([
    {
        $match: { created_at: { $gt: date } }
    },
    {
        $facet: {
            by_week: {
                $group: {
                    _id: { $week: $created_at},
                    count: { $sum: 1 }
                },
                { $sort: { "_id": -1 }}
            }, 
            by_day:  {
                        $group: {
                            _id: {
                                $dateToString: { format: "%Y-%m-%d", date: "$created_at" }
                            },
                            count: { $sum: 1 }
                        }
                    },
                    {  $sort: { "_id": -1 }}  
                }
    },
  
])

现在还不清楚你想要完成什么。你应该重新写下你的问题,让它更容易理解你想要完成什么。当然,查尔斯。我已经重写了。希望能有帮助。非常感谢。