복붙노트

[MONGODB] 두 점 사이의 MongoDB를 인쇄 거리

MONGODB

두 점 사이의 MongoDB를 인쇄 거리

내가 MongoDB를에이 ​​쿼리를 발사하고, 내가 지정한 좌표 500 마일 근처에있는 모든 장소를 얻고있다. 하지만 지정된 좌표와 결과 위치 사이의 정확한 거리를 알고 싶어합니다.

db.new_stores.find({ "geometry": { $nearSphere: { $geometry: { type: "Point", coordinates: [ -81.093699, 32.074673 ] }, $maxDistance: 500 * 3963 } } } ).pretty()

내 출력 외모가 좋아 :

{
    "_id" : ObjectId("565172058bc200b0db0f75b1"),
    "type" : "Feature",
    "geometry" : {
        "type" : "Point",
        "coordinates" : [
            -80.148826,
            25.941116
        ]
    },
    "properties" : {
        "Name" : "Anthony's Coal Fired Pizza",
        "Address" : "17901 Biscayne Blvd, Aventura, FL"
    }
}

또한 지정된 좌표에서이 장소의 거리를 알고 싶어요. 나는 기하학에 2dsphere 인덱스를 만들었습니다.

해결법

  1. ==============================

    1.당신은 쿼리 지점에서 거리를 생산하기 위해 $ geoNear 집계 파이프 라인 단계를 사용할 수 있습니다 :

    당신은 쿼리 지점에서 거리를 생산하기 위해 $ geoNear 집계 파이프 라인 단계를 사용할 수 있습니다 :

     db.new_stores.aggregate([
        { "$geoNear": {
            "near": {
                "type": "Point",
                "coordinates": [ -81.093699, 32.074673 ]
            }, 
            "maxDistance": 500 * 1609,
            "spherical": true,
            "distanceField": "distance",
            "distanceMultiplier": 0.000621371
        }}
    ]).pretty()
    

    이것은 당신이 조회 된 지점까지의 거리를 포함하는 출력 문서에 다른 필드를 생성합니다 "distanceField"을 지정할 수 있습니다. 필요에 따라 또한 출력 거리에있는 변환을 적용하는 "distanceMultiplier"를 사용할 수 있습니다 (마일 즉 미터 및 지적 모든 GeoJSON 거리가 미터에 반환됩니다)

    이 비슷한 옵션과 함께 geoNear 명령도하지만, 물론 그것은 출력으로 커서를 반환하지 않습니다.

  2. from https://stackoverflow.com/questions/33864461/mongodb-print-distance-between-two-points by cc-by-sa and MIT license