【发布时间】:2016-04-13 15:54:45
【问题描述】:
我有一个有趣的问题。例如,我有一个带有 start_date 和 end_date 的 mongo 集合。我需要创建一个聚合查询(或 mapReduce),它将返回一个具有重叠日期的数组数组。
例如:
收藏:
[{
_id: 1111111,
start_date: '10/04/2016',
end_data: '13/04/2016'
},
{
_id: 2222222,
start_date: '11/04/2016',
end_data: '20/04/2016'
},
{
_id: 3333333,
start_date: '10/05/2016',
end_data: '13/05/2016'
},
{
_id: 44444444,
start_date: '12/05/2016',
end_data: '15/05/2016'
},
{
_id: 55555555,
start_date: '18/04/2016',
end_data: '22/04/2016'
}]
应该返回
[[1111111, 2222222], [3333333,44444444], [2222222, 55555555]]
【问题讨论】:
-
如果您有超过 2 个文件重叠怎么办?
-
不,你不能通过聚合来做到这一点,你需要在应用程序中做到这一点。
-
不可能?不...怎么样:项目(将2个日期放在一个数组中)>在该数组上展开>按日期分组>如果一个日期是开始而另一个是结束则匹配> addToSet thesw分组ID......它是全局的想法,我会尝试给出确切的代码。
-
VonD 是的,它可以不只是 2 个文档重叠。 BanksySan,我知道这是可能的。 Ludovic 如果您能提供任何示例,那就太好了,我喜欢您的想法!也许存储过程也可以?
标签: mongodb mapreduce mongodb-query aggregation-framework