使用MongoDB数组操作提取单日多段工作时段起止时间并拆分文档
时段拆分需求说明
我需要从下述data中提取开始时间和结束时间,规则为:出现数值0时为工作结束时间,下一个数值大于0时为新工作时段开始,每当出现大于0的新时段起始值时,需将原文档拆分为多个独立文档。
适用场景
用户单日为多段非连续工作模式,而非全天固定时段(如9:00至17:00),例如工作时段为9-10、11-12、15-16,需拆分出对应各个时段的文档。
原始数据
{"data": {"2020-09-04T12:18:41Z": 0,"2020-09-04T12:18:42Z": 1,"2020-09-04T14:59:50Z": 1,"2020-09-04T14:59:59Z": 0,"2020-09-04T15:00:00Z": 0,"2020-09-04T15:00:01Z": 1,"2020-09-04T15:05:00Z": 1,"2020-09-04T15:05:01Z": 0,"2020-09-04T15:40:00Z": 0,"2020-09-04T15:40:01Z": 1,"2020-09-04T16:00:00Z": 1,"2020-09-04T16:00:01Z": 0,"2020-09-04T16:30:00Z": 0,"2020-09-04T16:30:01Z": 1,"2020-09-04T16:52:50Z": 1,"2020-09-04T16:52:51Z": 0,"2020-09-04T18:10:00Z": 0,"2020-09-04T18:10:01Z": 1,"2020-09-04T18:35:00Z": 1,"2020-09-04T18:35:01Z": 0,"2020-09-04T18:59:00Z": 0,"2020-09-04T18:59:01Z": 1,"2020-09-04T19:00:00Z": 1,"2020-09-04T19:00:01Z": 0,"2020-09-04T19:30:00Z": 0,"2020-09-04T19:30:01Z": 1,"2020-09-04T19:52:50Z": 1,"2020-09-04T19:52:51Z": 0}}
拆分后得到的独立工作时段
- 时段1:2020-09-04T12:18:42Z 至 2020-09-04T14:59:59Z
- 时段2:2020-09-04T15:00:01Z 至 2020-09-04T15:05:01Z
- 时段3:2020-09-04T15:40:01Z 至 2020-09-04T16:00:01Z
- 时段4:2020-09-04T16:30:01Z 至 2020-09-04T16:52:51Z
- 时段5:2020-09-04T18:10:01Z 至 2020-09-04T18:35:01Z
- 时段6:2020-09-04T18:59:01Z 至 2020-09-04T19:00:01Z
- 时段7:2020-09-04T19:30:01Z 至 2020-09-04T19:52:51Z
内容的提问来源于stack exchange,提问作者bc110402922
相关产品推荐
相关产品推荐

