你的问题中没有代码,所以我想我会从文档中窃取。
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 在手册页上。
从一个完整的数据集中实际找到“最远”点是一种反直觉的近乎的用法,因为它的设计目的是。
作为最后一点的说明,没有 “最远” 运算符本身,主要是因为它似乎缺乏很多实际用途。
但希望您实际上是指所描述的内容,并且确实对您有实际用途,并且我希望这就是您的问题实际所要求的。