2013-08-16 21 views
2

我有一个集合,名称事件:关于源和目标的MongoDB空间查询

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

我想对Events集合进行查询,并只获取距离源的某个距离内和离目标的某个距离内的事件。

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

我很困惑,因为我的数据模型应该如何以及如何查询以实现我的目的?

感谢

回答

1

你必须与地理指标限制下进行工作,所以它给你留下一对夫妇的选择。一种是创建两个集合并运行两个查询,然后在应用程序级别解决交集。这可能是昂贵的,取决于你在做什么。

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

1

您可能只有每收集1个地理空间索引,现在。虽然MongoDB可能允许创建多个索引,但此行为不受支持。因为MongoDB中只能使用一个索引来支持一个单一的查询,在大多数情况下,有多个地理指标会产生令人不快的行为

有在JIRA几个门票这一点,你可能要进行投票:

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

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