如何解决MongoDB-如何显示发生次数最多的时期?
我是MongoDB的新手,所以在查找出现次数最多的期间时遇到了问题。
我有一个集合,其中包含与不同国家以及date_start
和date_end
有关的文档。
"country": "Austria","date_start": "2020-03-16","date_end": "2020-05-04"
我想找到大多数国家/地区重叠的时间段(此集合详细说明了一个国家/地区发生特定事件的时间段)。例如:
1 ------------------------------------------------ 2
3ooooooooooooooooooooooooo4
5~~~~~~~~~~~~~~~~~~~~~~~~6
我希望获得大多数国家/地区重叠的时间段,在此示例中,该时间段介于3和6之间。
谢谢!
解决方法
不太确定您的解释。 这是国家/地区的结果,其中大多数国家/地区在日期范围内重叠。
使用 INNER JOIN ($ lookup)进行汇总,通过从结果中投影($ project)值来过滤($ filter)主要国家/地区范围之间的日期:
最后的聚合操作设置原始集合中的哪些字段是$ project-ed。
汇总示例:
db.collection.aggregate([
{
"$lookup": {
"from": "collection",pipeline: [],"as": "countries"
}
},{
$project: {
"country": 1,"date_start": 1,"date_end": 1,"in_date_range": {
"$filter": {
"input": "$countries",as: "item",cond: {
"$and": [
{
"$ne": [
"$$item.country","$country"
]
},{
"$lt": [
"$$item.date_start","$date_end"
]
},{
"$gte": [
"$$item.date_end","$date_start"
]
}
]
}
}
}
}
},"in_date_range": {
"$map": {
input: "$in_date_range.country",as: "country",in: "$$country"
}
}
}
}
])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。