【发布时间】:2016-07-14 19:28:46
【问题描述】:
我们有一个 mongodb 数据库,其中 >200K 行,每行都包含一个点位置 (lat,lng)。我们想创建一个查询,指定一个地理点和半径并返回一个集群列表。每个集群基本上是彼此靠近的位置的聚合。
第一个问题:mongodb是否可以为我们自动创建和维护这些集群?如果是,我们如何查询 mongodb 以返回特定地理位置的集群(不是实际数据点)。每个返回的集群都有一个位置和实际数据点的数量(地理标记的行)。基本上,我们希望它返回等效的 k-means 聚类算法。
我们创建了一个 mongodb geoHaystack 索引,该索引似乎对行进行聚类,但不确定如何使用它来实现上述查询:
db.locations.createIndex( { 'position' : "geoHaystack", type : 1 } , { bucketSize : 1 })
或者,我们可以动态使用诸如https://github.com/spember/geo-cluster 之类的聚类算法来生成这些聚类,但我假设这将是一个非常缓慢的过程。
关于如何最好地实现此类查询的任何建议?
【问题讨论】:
-
你有没有为你的问题找到任何优化的解决方案
标签: mongodb geolocation geospatial