我有一个集合,名称为事件:
事件集合中的每个文档都有经纬度单位的源和目的地。
我想对事件集合进行查询,并仅获取距源一定距离内和距目的地一定距离内的那些事件。
我了解到 MongoDB 不支持一个集合上的两个地理空间索引。
我很困惑我的数据模型应该是什么样子以及如何进行查询来实现我的目的?
谢谢
最佳答案
您必须遵守地理索引限制,因此您有几个选择。一种是创建两个集合并运行两个查询,并在应用程序级别解析交集。这可能会很昂贵,具体取决于您正在做什么。
另一种情况是使用一个集合,但更改查询以检查某些几何图形中的 $geo,该几何图形表示源和目标周围区域的交叉区域。由于您正在查询距源和目的地一定距离内的事件,这意味着存在交叉区域。由您来计算相交几何形状。如果可能,您可以预先计算并存储这些交集。
关于MongoDB 源和目标空间查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18283168/