MongoDB-仅当记录字段是连续的时才对它们进行分组/汇总,并按时间排序

时间:2018-11-05 16:12:52

标签: mongodb aggregation-framework

我有一个看起来像这样的收藏集:

[{ 
"_id" : ..., 
"name" : "bla", 
"type" : "A", 
"time" : NumberInt(1)
},
{ 
"_id" : ..., 
"name" : "bla", 
"type" : "A", 
"time" : NumberInt(2)
},
{ 
"_id" : ..., 
"name" : "bla", 
"type" : "A", 
"time" : NumberInt(3)
},
{ 
"_id" : ..., 
"name" : "cla", 
"type" : "B", 
"time" : NumberInt(4)
},
{ 
"_id" : ..., 
"name" : "cla", 
"type" : "A", 
"time" : NumberInt(5)
},
{ 
"_id" : ..., 
"name" : "bla", 
"type" : "A", 
"time" : NumberInt(6)
}]

我想按时间排序,然后根据“名称”分组并形成类型列表,但仅适用于具有相同名称(时间)的连续记录。我想要的结果如下所示:

[{
    "_id": "....",
    "name": "bla",
    "types": ["A", "A", "A"],
    "start_time": 1,
    "end_time": 3
},
{
    "_id": "....",
    "name": "cla",
    "types": ["B", "A"],
    "start_time": 4,
    "end_time": 5
},
{
    "_id": "....",
    "name": "bla",
    "types": ["A"],
    "start_time": 6,
    "end_time": 6
}]

到目前为止,我唯一能够做到这一点的方法是遍历每条记录并检查名称是否已更改。我尝试使用聚合和分组,但是没有找到一种仅对上述连续记录进行分组的方法。有没有办法让我们实现这一结果的聚合框架?

0 个答案:

没有答案