我正在使用 spring-data 与 mongodb 进行通信,我正在寻找一种执行地理查询的方法,该方法将通过数据库中的给定地理点检索附近的配置文件,我对查询的要求是:
1) 距离限制
2) 返回的配置文件数量限制
3) 根据配置文件文档中的时间字段进行额外搜索
4) 从检索到的文档中包含/排除字段的能力
起初我使用mongoTemplate.geoNear方法...
Query criteria = new Query(Criteria.where("time").gte("some_date"));
criteria.fields().exclude("friends");
NearQuery query = NearQuery.near(point).maxDistance(maxDistance)
.num(limit).query(criteria);
GeoResults<Profile> result = mongoTemplate
.geoNear(query, Profile.class);<br/>
但后来我意识到 mongo 不支持在 geoNear 查询中包含/排除字段。
所以我在考虑Near查询,似乎在 spring-data 中执行这种“复杂”查询的唯一方法是使用@Query注释,有没有办法在那种查询中支持上述要求 2,3 ? 还有其他方法吗?
谢谢