我需要针对一组文档生成一份报告,其中包含两个日期之间的时间戳。报告需要列出每个文档,但它还需要为每个文档包含一个字段,以指示它是否是其组中的第一个文档,由属性指示。
虽然只应包括两个日期之间的文件,但在决定每个文件是否是第一个文件时,需要考虑开始日期之前的文件。
E.g。给出数据
{ "_id": 1, "group": "A", "timestamp": "2015-01-01" }
{ "_id": 2, "group": "B", "timestamp": "2015-01-02" }
{ "_id": 3, "group": "A", "timestamp": "2015-01-03" }
{ "_id": 4, "group": "C", "timestamp": "2015-01-04" }
{ "_id": 5, "group": "B", "timestamp": "2015-01-05" }
{ "_id": 6, "group": "C", "timestamp": "2015-01-06" }
生成2015-01-02至2015-01-05的报告将返回
{ "_id": 2, "group": "B", "timestamp": "2015-01-02", "first": 1 }
{ "_id": 3, "group": "A", "timestamp": "2015-01-03", "first": 0 }
{ "_id": 4, "group": "C", "timestamp": "2015-01-04", "first": 1 }
{ "_id": 5, "group": "B", "timestamp": "2015-01-05", "first": 0 }
目前,我通过按组排序所有文档然后按时间戳排序,然后循环整个数据集,跟踪上一行,以确定日期范围内的行是否是其类型的第一行。使用大型数据集这是非常缓慢的 - 感觉好像必须有一个更好的方式涉及分组或聪明的东西,但我的Mongo技能不能胜任工作 - 任何建议?