gpt4 book ai didi

java - 从数据库获取结果之前进行自定义排序

转载 作者:行者123 更新时间:2023-12-02 06:21:59 26 4
gpt4 key购买 nike

我正在使用 Java 驱动程序来查找 MongoDB 上的某些条目。我想做的是从数据库中获取特定纬度、经度之间的所有条目,但只获取最接近的 20 个结果。假设我有参数 lat = Latitude , lng = Longitude 。

我想做:

BasicDBObject query = new BasicDBObject();
query.put("latitude", new BasicDBObject("$gte", Double.parseDouble(lat) - 0.1).append("$lte", Double.parseDouble(lat) + 0.1));
query.put("longitude", new BasicDBObject("$gte", Double.parseDouble(lng) - 0.1).append("$lte", Double.parseDouble(lng) + 0.1));
db.find(query).limit(20).sort(???)...

普通排序的问题在于它仅对特定字段进行升序/降序排序,并且不提供更复杂的排序,例如:(lat+lng)。

此外,我需要在获取之前完成排序,因为我想要从所有数据库中获取最接近的 20 个结果,而不是获取适合查询的 20 个结果,然后只有在获取它们之后,才将它们排序出来.

有人知道如何做到这一点吗?

最佳答案

$geoNear ( http://docs.mongodb.org/manual/reference/command/geoNear/ ) 实际上应该在返回之前先按最接近的顺序排序。

更通用的引用链接是:http://docs.mongodb.org/manual/reference/command/nav-geospatial/

关于java - 从数据库获取结果之前进行自定义排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20924699/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com