mongodb/javascript:按日期分组数据,对其执行操作,然后显示数据

mongodb/javascript:按日期分组数据,对其执行操作,然后显示数据,javascript,mongodb,mongoose,aggregation-framework,Javascript,Mongodb,Mongoose,Aggregation Framework,这是一个示例JSON对象,其中有1000个类似的对象,存储在我的MongoDB集合中 { “_id”:ObjectId(“5b1bb74ffc7ee601c6915939”), “groupId”:“-abcde”, “应用程序ID”:“AVCVC”, “集成”:“web”, “类别”:“消息”, “操作”:“消息”, “类型”:“newMessage”, “Id”:“活动”, “数据”:{ “测试”:“早上好” }, “时间戳”:1528543055858.0, “createdAt”:ISO

这是一个示例JSON对象,其中有1000个类似的对象,存储在我的MongoDB集合中

{
“_id”:ObjectId(“5b1bb74ffc7ee601c6915939”),
“groupId”:“-abcde”,
“应用程序ID”:“AVCVC”,
“集成”:“web”,
“类别”:“消息”,
“操作”:“消息”,
“类型”:“newMessage”,
“Id”:“活动”,
“数据”:{
“测试”:“早上好”
},
“时间戳”:1528543055858.0,
“createdAt”:ISODate(“2018-06-09T11:17:35.868+0000”),
“更新日期”:ISODate(“2018-06-09T11:17:35.868+0000”),
“_v”:数字打印(0)
}

该对象是日期为2018-06-09的数据示例。数据库中有连续日期的对象。我必须获取具有特定日期的数据,并对具有该日期的所有对象执行此操作

db.collection.aggregate([{
$match:{
$or:[{
键入:“鼠标悬停时单击”
}, {
键入:“鼠标悬停时”
},
{
键入:“聊天开始时”
}, {
类型:“加载事件”
}
]
}
},
{
$group:{
_id:null,
计数:{
$sum:1
}
}
}

]);您不能按日期分组,原因是不同的分、秒、毫秒等

你需要为date而不是datetime创建一个项目,这些项目可以有相同的日期但不同的时间 然后,您可以执行分组和您想要执行的操作

db.getCollection("collection")
  .aggregate([
    {
      $project : {
        "groupId":1,
        "applicationId":1,
        "integration":1,
        "Category":1,
        "Action":1,
        "Type":1,
        "Id":1,
        "data":1,
        "timestamp":1,
        "createdAt":1,
        "updatedAt":1,
        "__v":1
        createdDate: { $dateToString: {format: "%G-%m-%d", date: "$createdAt"}},
      }
    },
    {
        $group: { _id: "$createdDate", count: { $sum: 1 } },

    }
  ]);

你得到正确答案了吗?