【问题标题】:Geospatial near query get the furthest point from current point?地理空间近查询从当前点获取最远点?
【发布时间】:2014-06-01 07:28:37
【问题描述】:

您好,这是 mongodb 地理空间近距离查询的新手问题 - 距当前用户点的距离存在未知点,我需要找到距当前点最远的点(给定距离范围)。

但似乎 near 仅按距离升序(或最近)的顺序对其进行排序,所以问题是如何获得按距离降序(最远)排序的 Geo 结果?

谢谢!!

【问题讨论】:

  • 最远与最远,嗯 :)

标签: mongodb geospatial aggregation-framework


【解决方案1】:

你的问题中没有代码,所以我想我会从文档中窃取。

catch 实际上有一个“距离”字段可供排序,$near 运算符满足人们“期望”事物按“最近”顺序排列的一般情况。

但是您可以使用聚合框架和那里的 $geoNear 运算符来做到这一点:

db.places.aggregate([
    // Must be the the "first" pipeline stage
    { "$geoNear": {
        "near": [40.724, -73.997],
        "distanceField": "dist.calculated",
        "maxDistance": 0.008,
        "query": { "type": "public" },
        "includeLocs": "dist.location",
        "num": 5
    }},

    // Now you have something to sort on, so furthest comes first
    { "$sort": { "dist.calculated": -1 } },

    // And return only 1
    { "$limit": 1 }
])

但请注意,这样做的目的是从您查询的点“附近”找到“最远”的可能位置,并且仅在您绑定到查询的约束“范围内”,最多可能有 100 个结果。

完整的options spec 在手册页上。

从一个完整的数据集中实际找到“最远”点是一种反直觉的近乎的用法,因为它的设计目的是。

作为最后一点的说明,没有 “最远” 运算符本身,主要是因为它似乎缺乏很多实际用途。

但希望您实际上是指所描述的内容,并且确实对您有实际用途,并且我希望这就是您的问题实际所要求的。

【讨论】:

  • 感谢尼尔的回答!你是对的,这就是我所要求的,我将研究 mongo 聚合框架并从那里开始。
猜你喜欢
  • 2021-11-29
  • 1970-01-01
  • 2011-08-26
  • 2017-02-16
  • 2017-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多