当我在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
]
}
}
}