0

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

4

2 回答 2

2

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

于 2012-06-11T15:27:16.377 回答
0

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

  1. 创建一个集合“网格”,其点覆盖所有形状的公共边界框(在 javascript 中使用嵌套的 for 循环)
  2. 在网格上创建二维索引
  3. 对于每个形状,搜索位于该形状内的所有网格点;用形状的 id 标记每个网格点(在网格点上使用数组属性)

要查看一个点的形状,请搜索最近的网格点,并返回其分配的形状属性。首先检查公共边界框,因为它外面的点应该总是返回“不是任何形状”,而不是使用最近的网格点。

根据您需要的精度,这可能是也可能不是可用的解决方案。准确性取决于您在网格中放置了多少点,并且您可以根据网格的本地密度做一些智能的事情。

于 2013-05-25T16:18:33.413 回答