sql >> データベース >  >> NoSQL >> MongoDB

距離を取得する方法-MongoDBテンプレートNear関数

    これは、geoNearaggregation で実行できます。 。 spring-data-mongodb GeoNearOperation この集計を表しています。

    継承を拡張または作成するPlace 距離情報が必要なフィールドを持つクラス(継承の例):

    public class PlaceWithDistance extends Place {
        private double distance;
    
        public double getDistance() {
            return distance;
        }
    
        public void setDistance(final double distance) {
            this.distance = distance;
        }
    }
    

    Criteriaの代わりに Queryを使用 集計を使用します。 geoNearの2番目の引数 距離を設定するフィールドの名前です:

    final NearQuery nearQuery = NearQuery
        .near(new Point(searchRequest.getLat(), searchRequest.getLng()));
    nearQuery.num(5);
    nearQuery.spherical(true); // if using 2dsphere index, otherwise delete or set false
    
    // "distance" argument is name of field for distance
    final Aggregation a = newAggregation(geoNear(nearQuery, "distance"));
    
    final AggregationResults<PlaceWithDistance> results = 
        mongoTemplate.aggregate(a, Place.class, PlaceWithDistance.class);
    
    // results.forEach(System.out::println);
    List<PlaceWithDistance> ls = results.getMappedResults();
    

    簡単にするために-関連するインポート:

    import static org.springframework.data.mongodb.core.aggregation.Aggregation.geoNear;
    import static org.springframework.data.mongodb.core.aggregation.Aggregation.newAggregation;
    
    import org.springframework.data.mongodb.core.aggregation.Aggregation;
    import org.springframework.data.mongodb.core.aggregation.AggregationResults;
    import org.springframework.data.mongodb.core.aggregation.GeoNearOperation;
    import org.springframework.data.mongodb.core.query.NearQuery;
    


    1. Elasticsearchでmongoコネクタを使用してカスタムマッピングを行う方法

    2. MongoDBでユーザーを作成してロールを追加する方法

    3. function-yで定義する必要があるvar-aにアクセスするparameter-fct_xを受け入れるfunction-yの書き方は?

    4. mongodbからコレクションを削除できません