MongoDb-两个坐标之间的距离计算



当我在MongoDB上触发此查询时,我正在获取指定坐标附近的所有位置{ "coordinates", new BsonArray { longitude, latitude } } maxDistanceInKm

BsonDocument geoNearStep = new BsonDocument {
    { "$geoNear", new BsonDocument {
        { "near", new BsonDocument {
            { "type", "Point" },
            { "coordinates", new BsonArray { longitude, latitude } }
        }},
        { "spherical", true },
        { "query", andQuery},
        { "limit", 200 },
        { "maxDistance", maxDistanceInKm * 1000 },
        { "distanceField", "Location.distance" }
    }}
};

现在我想使用结果位置并计算每个位置与我{ "NewCoordinates", new BsonArray { NewLongitude, NewLatitude } }的另一个坐标的距离。

我不确定如何查询MongoDb以使其计算从新坐标查询中找到的位置的各个距离。请指教。

事实证明,

这在当前版本的MongoDb中是不可能的,我们最终在.net端实现了它。

{
    "$addFields": {
        "distance": {
            "$multiply": [
                {
                    "$radiansToDegrees": {
                        "$acos": {
                            "$add": [
                                {
                                    "$multiply": [
                                        {
                                            "$sin": {
                                                "$degreesToRadians": "$lat2"
                                            }
                                        },
                                        {
                                            "$sin": {
                                                "$degreesToRadians": "$lat1"
                                            }
                                        }
                                    ]
                                },
                                {
                                    "$multiply": [
                                        {
                                            "$cos": {
                                                "$degreesToRadians": {
                                                    "$subtract": [
                                                        "$lng2",
                                                        "$lng1"
                                                    ]
                                                }
                                            }
                                        },
                                        {
                                            "$cos": {
                                                "$degreesToRadians": "$lat2"
                                            }
                                        },
                                        {
                                            "$cos": {
                                                "$degreesToRadians": "$lat1"
                                            }
                                        }
                                    ]
                                }
                            ]
                        }
                    }
                },
                111.18957696
            ]
        }
    }
}

最新更新