【问题标题】:How to make a nearBy-search with lat/lng fields with Spring Data MongoDB如何使用 Spring Data MongoDB 使用 lat/lng 字段进行近旁搜索
【发布时间】:2015-06-22 19:56:00
【问题描述】:

我的文档类中有两个双字段(纬度/经度)。

Double lat, lng;

如何将它们与 Spring Data 一起使用以进行近旁搜索?

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

有没有办法使用分离的 lat、lng 字段进行近旁搜索?

使用 NearQuery(clat/clng 为中心点,rangeKm 为半径,单位为公里)

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

带查询(location是lat/lng数组,clat/clng是中心点,rangeKm是半径km)

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

编辑: 我决定制作一个双数组并通过查询进行搜索。 maxDistance 的默认测量单位是什么(米、公里……)?

【问题讨论】:

    标签: mongodb spring-data


    【解决方案1】:

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

    只需使用以下之一

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-13
      • 1970-01-01
      • 1970-01-01
      • 2016-07-13
      • 1970-01-01
      • 2018-09-05
      • 1970-01-01
      相关资源
      最近更新 更多