我有一个集合,名称为Events:
Events集合中的每个文档都包含lat-long的源和目标。
我想对事件集合进行查询,并仅获取距离源一定距离且距离目标一定距离内的事件。
我读到MongoDB不支持一个集合上的两个地理空间索引。
我很困惑,因为我的数据模型应该是什么样子,如何进行查询以实现我的目的?
由于
答案 0 :(得分:1)
目前,每个集合可能只有1个地理空间索引。虽然MongoDB可能允许创建多个索引,但不支持此行为。因为MongoDB只能使用一个索引来支持单个查询,所以在大多数情况下,拥有多个地理索引会产生不良行为
JIRA中有一些门票可能需要投票:
答案 1 :(得分:1)
您必须使用地理索引限制,因此它会为您提供几个选项。一种是创建两个集合并运行两个查询,并在应用程序级别解析交集。根据你正在做的事情,这可能很昂贵。
另一种情况是使用一个集合,但更改查询以检查$ geowithin某些几何体,它代表源和目标周围区域的交叉区域。由于您要查询的是距离源和目的地一定距离的事件,这意味着存在交叉区域。由您来计算交叉点几何形状。如果可能,您可以预先计算并存储这些交叉点。