如何使用 lat/lng 字段和 Spring 数据 MongoDB 进行 nearBy-search

How to make a nearBy-search with lat/lng fields with Spring Data MongoDB

我的文档中有两个双字段(lat/lng)-class.

Double lat, lng;

如何将它们与 Spring 数据一起用于 nearBy-search?

我只找到了 NearQuery 和 Query 的示例。 在 NearQuery 示例中没有提到,正在使用哪些字段,并且查询仅适用于双数组。

有没有办法使 nearBy-search 与分离的 lat、lng 字段一起工作?

使用NearQuery(clat/clng为中心点,rangeKm为半径km)

NearQuery.near(clat, clng, Metrics.KILOMETERS).maxDistance(rangeKm);

With Query(location为lat/lng数组,clat/clng为中心点,rangeKm为半径km)

criteria.and("location").near(new Point(clat, clng)).maxDistance(rangeKm);

编辑: 我决定制作一个双数组并通过查询对其进行搜索。 maxDistance 的默认测量单位是哪个(米、千米...)?

这不可能。您将必须坚持 MongoDB 期望您存储数据的方式。有关详细信息,请参阅 geospatial-indexes 上的 MongoDB 文档。

只需使用以下其中一项

Double[] location;      // legacy coordinate pair
Point location;         // legacy coordinate pair
GeoJsonPoint location;  // geojson type point

当然,您可以编写自己的 Converter 来将数据转换为您需要的格式,但我想与以正确的方式存储数据相比,这将是一项相当大的工作。