Mongodb聚集-先展开,然后分组(查找唯一计数)
我用这种格式存储数据。我想在日期上找到唯一的msisdn。即,在日期上依靠唯一的msisdnMongodb聚集-先展开,然后分组(查找唯一计数),mongodb,mongodb-query,aggregation-framework,aggregate,aggregation,Mongodb,Mongodb Query,Aggregation Framework,Aggregate,Aggregation,我用这种格式存储数据。我想在日期上找到唯一的msisdn。即,在日期上依靠唯一的msisdn { "_id" : ObjectId("5e551b2e63a0f1fc55f026dd"), "dateHour" : "2020-02-25 13", "detail" : [ { "campaignId" : &qu
{
"_id" : ObjectId("5e551b2e63a0f1fc55f026dd"),
"dateHour" : "2020-02-25 13",
"detail" : [
{
"campaignId" : "5e4a937b459418737cc1dfa5",
"timestamp" : "2020-02-25 13:03:626",
"msisdn" : "050920305373677038659253736080036024-1582133696781",
},
{
"campaignId" : "5e4a937b459418737cc1dfa5",
"timestamp" : "2020-02-2025 13:04:626",
"msisdn" : "050920305373677038659253736080036024-1582133696781",
},
{
"campaignId" : "5e4a937b459418737cc1dfa5",
"timestamp" : "2020-02-25 13:06:626",
"msisdn" : "050920305373677038659253-1582133696781",
}
]
}
你可以做如下的事情
[
{
$unwind: "$detail"
},
{
$addFields: {
"dHr": {
$substr: [
"$dateHour",
0,
10
]
}
}
},
{
$group: {
_id: "$dHr",
msisdn: {
$addToSet: "$detail.msisdn"
}
}
},
{
$project: {
_id: 0,
date: "$_id",
count: {
$size: "$msisdn"
}
}
}
]
工作是否意味着你需要通过组合
msisdn
和timestamp
找到唯一的msisdn?我需要在日期2020-02-25这样的日期找到唯一的msisdn:唯一的msisdn的数量是2{date:2020-02-25,msisdn:2,date:2020-02-26,msisdn:3}有两个日期,dateHour
和timestamp
,你要拍哪一张?我想拍dateHourIt工作的时候。。谢谢。欢迎,但当你发布问题时,请检查你是否包含所有相关内容。祝你今天愉快