如何使用 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
来将数据转换为您需要的格式,但我想与以正确的方式存储数据相比,这将是一项相当大的工作。
我的文档中有两个双字段(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
来将数据转换为您需要的格式,但我想与以正确的方式存储数据相比,这将是一项相当大的工作。