具有来自数据库的MaxDistance值的MongoDB Near / GeoNear

时间:2015-02-22 14:40:47

标签: mongodb gps erlang geospatial

我想使用MongoDB做一些非常特别的事情,但还不知道怎么做。

所以这是:

到目前为止,查询近处位置,MaxDistance选项位于查询上。

我想从数据库中的Object获取MaxDistance。

为了说明我想要的,这里有一个小图:

  • 黑点是数据库中的点
  • 彩色圆圈与每个点的不同距离
  • 蓝点是查询中的点
  • 在此示例中,由于蓝点匹配2个圆圈,因此应返回2个(红色和绿色)......

GeoLoc

虽然正常使用看起来更多(图形化):

NormalGeo

我不能提升/减少BlueDot maxDistance,因为它可能会匹配(或不匹配)某些(BlackDot +他们自己的MaxDistance),而不应该。(/ p>

顺便说一下,我正在使用Erlang ......

任何想法,如何在不必从数据库中检索所有点并在我的软件中进行GPS数学的情况下如何做到这一点?

1 个答案:

答案 0 :(得分:2)

显然可以使用聚合来完成:找到here

pipeline : [
  {
    '$geoNear' : {
      near : [
        10, 
        10
      ],
      distanceField : 'distance',
      spherical : false,
      uniqueDocs : true
    }
  }, 
  {
    '$project' : {
      name : 1,
      location : 1,
      maximumDistance : 1,
      delta : {
        '$subtract' : [
          '$maximumDistance', 
          '$distance'
        ]
      }
    }
  }, 
  {
    '$match' : {
      delta : { '$gte' : 0 }
    }
  }
]