spring 在MOngoDB中使用基于日期的Sping Boot 对数据进行分组,如星期日星期一开始日期,文档的发生计数基于字段

pcww981p  于 2023-03-11  发布在  Spring
关注(0)|答案(1)|浏览(121)

我有一个数据收集如下&我想提取数据的基础上,为一个特定的日期,在同一天的文件发生的文件有关的一个特定的字段作为过滤器名称。

{
"_id" : ObjectId("6406e56d18ab204cfe6b7915"),
"timeStamp" : ISODate("2023-03-07"),
"filterName" : "ABC1"
},
{
"_id" : ObjectId("6406e56d18ab204cfe6b7915"),
"timeStamp" : ISODate("2023-03-07"),
"filterName" : "ABC2"
},
{
"_id" : ObjectId("6406e56d18ab204cfe6b7915"),
"timeStamp" : ISODate("2023-03-07"),
"filterName" : "ABC2"
},
{
"_id" : ObjectId("6406e56d18ab204cfe6b7915"),
"timeStamp" : ISODate("2023-03-06"),
"filterName" : "ABC3"
},
{
"_id" : ObjectId("6406e56d18ab204cfe6b7915"),
"timeStamp" : ISODate("2023-03-05"),
"filterName" : "ABC3"
}

[
{
"id": "**Sunday**",
"countOccurance": [
{
**"ABC3": 1**
}
]
},
{
"id": "**Monday**",
"countOccurance": [
{
**"ABC3": 1**
}
]
},
{
"id": "**Tuesday**",
"countOccurance": [
{
**"ABC1": 1,
"ABC2": 2**
}
]
}
]
v09wglhw

v09wglhw1#

db.notification.aggregate([
{$match: {timeStamp: {$gte: new Date(Date.now() - 7 * 24 * 60 * 60 * 1000)}}},
{$group: {_id: { $dayOfWeek: { date: "$timeStamp" }},data: {$push: {k: "$filterName",v: { $sum: 1 }}}}},
{$project: {data: {$arrayToObject: "$data"}}},
{$sort: { "_id": 1 }}
])

相关问题