我有一个包含以下文件的收藏集:
/* 1 */
{
"_id" : "0017634ab72485cdd5f8afae7451c59f4274de49",
"LicensePlateID" : "abc",
"StartTimestamp" : "2018-09-14T23:01:25Z",
"EndTimestamp" : "2018-09-14T23:01:25Z",
"CameraID" : 23.0
}
/* 2 */
{
"_id" : "0017c7495c2510a801b95be4e7a9a57fbd80106c",
"LicensePlateID" : "abc",
"StartTimestamp" : "2018-09-15T20:02:48Z",
"EndTimestamp" : "2018-09-15T20:02:48Z",
"CameraID" : 30.0
}
/* 3 */
{
"_id" : "00222ee01cadd065ab7394b5da8e91ffe3297f44",
"LicensePlateID" : "def",
"StartTimestamp" : "2018-09-15T16:49:52Z",
"EndTimestamp" : "2018-09-15T16:49:52Z",
"CameraID" : 27.0
}
/* 4 */
{
"_id" : "0025777e2fd9faf4c4c3b82981e76e67f9c097b7",
"LicensePlateID" : "def",
"StartTimestamp" : "2018-09-16T06:31:16Z",
"EndTimestamp" : "2018-09-16T06:34:31Z",
"CameraID" : 31.0
}
我想构建一个结果集,其中对于给定时间的每个车牌ID,我想找到下一个摄像机ID。与此同时,我想从当前时间戳中提取月,日和小时。以下是示例响应:
{
"LicensePlateID" : "abc",
"month_of_day" : 9,
"day_of_week" : 14,
"hour": 23,
"CameraID" : 23.0,
"NextCameraID" : 30.0
}
{
"LicensePlateID" : "def",
"month_of_day" : 9,
"day_of_week" : 15,
"hour":16,
"CameraID" : 27.0,
"NextCameraID" : 31.0
}
方法 我首先使用LicensePlateID和开始时间对整个集合进行排序。然后,我将LicensePlateID以及从开始时间和摄像机ID开始的年,月,日和小时分组。
问题
如何通过聚合获取响应中的下一个摄像机ID 管道?
如果对整个集合进行排序,这是一个好习惯吗? 馆藏巨大吗?我如何不分类即可获取下一个摄像机ID?