mongodb/javascript:按日期分组数据,对其执行操作,然后显示数据
这是一个示例JSON对象,其中有1000个类似的对象,存储在我的MongoDB集合中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
{
“_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 } },
}
]);
你得到正确答案了吗?