gpt4 book ai didi

Spring-MongoDB geonear 不使用额外的字段

转载 作者:可可西里 更新时间:2023-11-01 09:45:05 25 4
gpt4 key购买 nike

我在 MongoDB 中有一些地理空间数据,我想找到靠近用户位置并符合特定条件的地点列表。

这是我的文档结构:

{ "_id" : { "$oid" : "528af043d1a2760efcd2fd2f" }, "city" : "Miami", "name" : "Some Place", "tickets" : 61, "zipcode" : "33142", "type" : "amusement park", "state" : "FL", "location" : [ -80.24, 25.8092 ]}
{ "_id" : { "$oid" : "528af043d1a2760efcd2fd30" }, "city" : "Miami", "name" : "Other place", "tickets" : 15, "zipcode" : "33150", "type" : "theatre", "state" : "FL", "location" : [ -80.2094, 25.8587 ]}

现在我试图通过纬度、经度来查找有售票且属于某种类型的地点。当我只使用带坐标的 NearQuery(不添加查询)时,我得到了结果,但是当我添加查询对象时,我得到的是空列表。

这是我的代码:

public GeoResults<Place> find(double lat, double lon, int tickets, String type) {
Point point = new Point(lon, lat);

Query query = new Query(Criteria.where("tickets").gt(tickets).
and("type").is(type));
NearQuery nearQuery = NearQuery.near(point).maxDistance(new Distance(10, Metrics.KILOMETERS));
nearQuery.query(query);
GeoResults<Place> repoData = repo.findByLocationNear(point, new Distance(10, Metrics.KILOMETERS));

GeoResults<Place> data = mongoTemplate.geoNear(nearQuery, Place.class);
List<Place> testData = mongoTemplate.find(query, Place.class);

return data;
}

从上面的代码来看,GeoResults 数据没有内容,而 List testData 返回正确的结果(但不使用空间信息)。如果我使用存储库,我可以获得位置列表,但这不会考虑其他参数。

提前致谢

最佳答案

我自己找到了一种方法。我将代码一直调试到 Spring-mongodb 库中,看到“num”设置为 0,“fields”设置为 null。因此,在调试期间,我手动添加了字段,并为它应该检索的文档数量提供了一个值。我的假设是它应该返回所有字段和任意数量的符合条件的文档。

这是创建查询的更新代码:

Query query = new Query(Criteria.where("tickets").gt(tickets).
and("type").is(type));
query.fields().include("city").include("name").include("tickets").
include("type").include("state").include("address");

NearQuery nearQuery = NearQuery.near(point).maxDistance(new Distance(radius, Metrics.KILOMETERS));
nearQuery.query(query);
nearQuery.num(100);

GeoResults<Place> data = mongoTemplate.geoNear(nearQuery, Place.class);

关于Spring-MongoDB geonear 不使用额外的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20073478/

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