【发布时间】:2013-08-16 22:41:16
【问题描述】:
我有一个集合,命名为事件:
Events 集合中的每个文档都有以 lat-long 为单位的源和目标。
我想对 Events 集合进行查询,并仅获取距离源有一定距离和距离目标有一定距离的那些事件。
我读到 MongoDB 不支持一个集合上的两个地理空间索引。
我对我的数据模型应该是什么样子以及如何进行查询以实现我的目的感到困惑?
谢谢
【问题讨论】:
标签: mongodb spatial-index
我有一个集合,命名为事件:
Events 集合中的每个文档都有以 lat-long 为单位的源和目标。
我想对 Events 集合进行查询,并仅获取距离源有一定距离和距离目标有一定距离的那些事件。
我读到 MongoDB 不支持一个集合上的两个地理空间索引。
我对我的数据模型应该是什么样子以及如何进行查询以实现我的目的感到困惑?
谢谢
【问题讨论】:
标签: mongodb spatial-index
您必须处理地理索引限制,因此您有几个选择。一种是创建两个集合并运行两个查询,并在应用程序级别解决交集。这可能会很昂贵,具体取决于您在做什么。
另一种情况是使用一个集合,但更改您的查询以检查 $geowithin 一些几何图形,该几何图形表示您的源和目标周围区域的交叉区域。由于您要查询的事件都在源和目的地的一定距离内,这意味着存在交叉区域。由您来计算相交几何。如果可能,您可以预先计算并存储这些交叉点。
【讨论】:
目前,每个集合可能只有 1 个地理空间索引。虽然 MongoDB 可能允许创建多个索引,但不支持此行为。因为 MongoDB 只能使用一个索引来支持单个查询,所以在大多数情况下,拥有多个地理索引会产生不良行为
在 JIRA 中有一些您可能想要投票的票:
【讨论】: