Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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 按天聚合生成重复的天结果_Node.js_Mongodb_Aggregation Framework - Fatal编程技术网

Node.js 按天聚合生成重复的天结果

Node.js 按天聚合生成重复的天结果,node.js,mongodb,aggregation-framework,Node.js,Mongodb,Aggregation Framework,我的mongodb聚合查询应该返回特定日期范围内的每日、每周、每月和每年的数据 示例:假设日期介于2月1日到3月1日之间 每日数据应为:1、2、3。。 每周周期为:2月1日、2月8日、2月15日、2月22日。。 月周期为2月1日、3月1日 请看下面的示例: 假设我的API接受:startDate、endDate、interval作为body参数 req.body将是这样的: { startDate: "", endDate: "", platform: "", interval: "daily"

我的mongodb聚合查询应该返回特定日期范围内的每日、每周、每月和每年的数据

示例:假设日期介于2月1日到3月1日之间

每日数据应为:1、2、3。。 每周周期为:2月1日、2月8日、2月15日、2月22日。。 月周期为2月1日、3月1日

请看下面的示例:

假设我的API接受:startDate、endDate、interval作为body参数

req.body将是这样的:

{
startDate: "",
endDate: "",
platform: "",
interval: "daily" // could be "weekly", "monthly", "yearly"
}
这些参数将被传递到我的模型中,我在模型中有一些聚合代码,下面将提到这些代码:

MessagesSchema.statics.totalMessages = ( startDate, endDate, platform, interval ) => {
        return Messages.aggregate([{
                $match: {
                    platform: platform,
                    timestamp: {
                        $gte: new Date(startDate),
                        $lte: new Date(endDate)
                    }
                }
            },
            {
                $project: {
                    timestamp: {
                        $dateToString: {
                            format: '%Y-%m-%d',
                            date: '$timestamp'
                        }
                    }
                }
            },
            {
                $group: {
                    _id: {
                        timestamp: '$timestamp'
                    },
                    count: {
                        $sum: 1
                    }
                }
            },
            {
                $sort: {
                    '_id.timestamp': 1
                }
            }
        ]).exec();
假设2019年2月1日至2019年3月1日的每周数据

预期结果:

[
    {
      "_id": {
        "timestamp": "2019-02-01"
      },
      "count": 2
    },
    {
      "_id": {
        "timestamp": "2019-02-08"
      },
      "count": 2
    },
    {
      "_id": {
        "timestamp": "2019-02-15"
      },
      "count": 2
    }
]

实际结果:

[
    {
      "_id": {
        "timestamp": "2019-02-01"
      },
      "count": 2
    },
    {
      "_id": {
        "timestamp": "2019-03-02"
      },
      "count": 2
    },
    {
      "_id": {
        "timestamp": "2019-03-02"
      },
      "count": 2
    }
]


您正在声明
$group
\u id
(主键)两次生成相同的值。请出示复制您的索赔要求的文件。但也要检查你的结果,因为这实际上不可能发生。或者至少不是因为问题中指定的代码。顺便说一句,编辑你的标题以反映你的实际要求。老兄,你完全把我的问题搞错了!我如何改变这个问题???如果可以,请撤消更改。我想你可以帮我解决这个问题。让我给你解释一下。但首先,请撤消更改。因为你完全误解了我