Mongodb GeoSpatial查询集合中的形状

时间:2012-06-11 14:51:25

标签: mongodb geospatial

我有一个集合,在一个字段(中心)上有一个2d地理空间索引,这是一个long / lat数组,该集合也有一个radius字段。所以每个项目都可以代表一个圆圈。我知道mongodb有一个运算符$,我想得到一个包含特定点[long,lat]的所有项的列表,但似乎我只能检查特定形状中的哪些点。

2 个答案:

答案 0 :(得分:2)

你是对的,现在,你不能做你想做的事。请在http://jira.mongodb.org提交功能请求,因为我找不到已存在的功能请求。

答案 1 :(得分:0)

这是我在我的情况下使用基本grid解决它(即获得覆盖给定点的形状)的方法。它具有有限的精度,具体取决于网格分辨率:

  1. 创建一个集合“网格”,其中的点覆盖了所有形状的公共边界框(在javascript中使用嵌套的for循环)
  2. 在网格上创建二维索引
  3. 对于每个形状,搜索形状内的所有网格点;使用形状的id标记每个网格点(使用网格点上的数组属性)
  4. 要查看点的形状,请搜索最近的网格点,然后返回其指定的形状属性。首先检查公共边界框,因为它外面的点应该总是返回“不是任何形状”,而不是使用最近的网格点。

    根据您所需的精度,这可能是也可能不是可用的解决方案。精确度取决于您在网格中放置的点数,并且您可以使用网格的局部密度来做一些聪明的事情。