我的Document-class中有两个Double-Fields(lat / lng)。
Double lat, lng;
如何将它们与Spring Data一起用于nearBy-search?
我发现只有NearQuery和Query的例子。 在NearQuery示例中没有提到,正在使用哪些字段,而Query仅适用于双数组。
有没有办法使用分隔的lat,lng字段进行nearBy-search工作?
使用NearQuery(clat / clng是中心点,rangeKm是以km为单位的半径)
NearQuery.near(clat, clng, Metrics.KILOMETERS).maxDistance(rangeKm);
使用Query(location是lat / lng数组,clat / clng是中心点,rangeKm是以km为单位的半径)
criteria.and("location").near(new Point(clat, clng)).maxDistance(rangeKm);
编辑: 我决定制作一个Double-Array并通过Query搜索它。 哪个是maxDistance的默认测量单位(米,公里......)?
答案 0 :(得分:1)
这是不可能的。您将不得不坚持MongoDB期望您存储数据的方式。有关更多详细信息,请参阅geospatial-indexes上的MongoDB文档。
只需使用以下其中一项
即可Double[] location; // legacy coordinate pair
Point location; // legacy coordinate pair
GeoJsonPoint location; // geojson type point
当然,您可以编写自己的Converter
来将数据添加到您需要的格式中,但我认为与仅以正确方式存储数据相比,这将是相当有用的工作。