【问题标题】:MongoDB Near/GeoNear with the MaxDistance value from DatabaseMongoDB Near/GeoNear 与数据库中的 MaxDistance 值
【发布时间】:2015-04-23 21:48:41
【问题描述】:

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

所以这里是:

到目前为止查询一个附近的位置,MaxDistance 选项在查询中。

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

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

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

虽然正常使用看起来更像这个(图形):

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

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

任何想法,我怎么能做到这一点,而不必从数据库中检索所有点并在我的软件中进行 GPS 数学运算?

【问题讨论】:

    标签: mongodb gps erlang geospatial


    【解决方案1】:

    显然它可以使用聚合来完成:找到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 }
        }
      }
    ]
    

    【讨论】:

    • 这个答案是金!非常感谢
    • @TheSquad 你能告诉我 $subtract 中的字段“maximumDistance”指的是谁的最大距离吗?是当前用户的最大距离还是其他用户的最大距离?
    猜你喜欢
    • 1970-01-01
    • 2017-07-18
    • 2012-11-29
    • 1970-01-01
    • 2013-10-20
    • 1970-01-01
    • 2021-03-20
    • 1970-01-01
    • 2020-08-25
    相关资源
    最近更新 更多