2

我有一个集合,名称为事件:

Events 集合中的每个文档都有 lat-long 的源和目标。

我想对事件集合进行查询,并仅获取与源有一定距离和与目的地有一定距离的那些事件。

我读到 MongoDB 不支持一个集合上的两个地理空间索引。

我对我的数据模型应该是什么样子以及如何进行查询以实现我的目的感到困惑?

谢谢

4

2 回答 2

1

目前,每个集合可能只有 1 个地理空间索引。虽然 MongoDB 可能允许创建多个索引,但不支持此行为。因为 MongoDB 只能使用一个索引来支持单个查询,所以在大多数情况下,拥有多个地理索引会产生不良行为

在 JIRA 中有一些您可能想要投票的票:

https://jira.mongodb.org/browse/SERVER-2331

https://jira.mongodb.org/browse/SERVER-3653

于 2013-08-17T04:34:50.773 回答
1

您将不得不处理地理索引限制,因此它为您提供了几个选择。一种是创建两个集合并运行两个查询,并在应用程序级别解决交集。这可能会很昂贵,具体取决于您在做什么。

另一种情况是使用一个集合,但更改您的查询以检查 $geowithin 一些几何图形,该几何图形表示您的源和目标周围区域的交叉区域。由于您要查询的事件都在您的源和目的地一定距离内,这意味着存在一个交叉区域。由您来计算相交几何。如果可能,您可以预先计算并存储这些交叉点。

于 2013-08-17T06:50:14.667 回答