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

时间:2015-04-16 12:06:36

标签: mongodb spring-data

我的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的默认测量单位(米,公里......)?

1 个答案:

答案 0 :(得分:1)

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

只需使用以下其中一项

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

当然,您可以编写自己的Converter来将数据添加到您需要的格式中,但我认为与仅以正确方式存储数据相比,这将是相当有用的工作。