地理空间近距离查询从当前点获得最远点?

时间:2014-04-17 06:33:32

标签: mongodb geospatial aggregation-framework

嗨这是mongodb Geospatial near query的一个新手问题 - 距当前用户点的距离存在未知点,我需要找到距当前点最远的点(给定距离范围)。

但似乎只是按照距离升序(或最近)的顺序对它进行排序,所以问题是我如何通过距离下降(最远)来排序Geo结果?

谢谢!

1 个答案:

答案 0 :(得分:2)

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

实际上,捕获的距离是#34;要对其进行排序的字段,$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位于手册页上。

从完整数据集中实际找到"最远" 点是一种反向直观用法,就像它的设计目的一样。

作为对最后一点的说明,没有"最远" 运算符,主要是因为它似乎缺乏大量实际用法。

但希望你实际上意味着所描述的内容并且确实对你有用,我希望这是你的问题实际上要求的。