我正在寻找一个实现2个地理空间索引的数据库,或者允许有效地模拟它。
动机:我们的应用程序处理向量而不是位置,我们经常需要找到源靠近某些东西并且目的地靠近其他东西的所有记录。
Mongodb没有它。有数据库吗?
可以使用mongodb map reduce功能进行模拟,其中数据库查找满足源约束的所有记录,然后将其传递给map-reduce以保留满足目标约束的那些记录。有没有人这样做?
感谢。
答案 0 :(得分:1)
可能可以在Mongo中使用MapReduce伪装它,但这只适合用作批处理作业,并且不太可能作为应用程序级别查询执行。
解决方法是将源和目标点存储在单独的Mongo集合中。然后,您可以使用$ near对源集合执行查询,将最近的点拉到源点,然后针对目标集合执行另一个$ near查询,并计算内存中的交集。
另一个选项 - 因为您可以使用地理空间索引来索引包含点数组的字段,所以将源点和目标点存储为数组中的元素。然后向该集合发出两个查询(一个用于源点,一个用于目标)并扫描两个结果集以计算最终结果(查询将不区分哪个匹配是源,哪个是目标,所以你必须在客户端检查它。