嗨这是mongodb Geospatial near query的一个新手问题 - 距当前用户点的距离存在未知点,我需要找到距当前点最远的点(给定距离范围)。
但似乎只是按照距离升序(或最近)的顺序对它进行排序,所以问题是我如何通过距离下降(最远)来排序Geo结果?
谢谢!
答案 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位于手册页上。
从完整数据集中实际找到"最远" 点是一种反向直观用法,就像它的设计目的一样。
作为对最后一点的说明,没有"最远" 运算符,主要是因为它似乎缺乏大量实际用法。
但希望你实际上意味着所描述的内容并且确实对你有用,我希望这是你的问题实际上要求的。