[英]How to calculate distance between 2 users using mongoDB and mongoose
我有一個用戶模式(貓鼬),其字段為“位置”-它由[經度,緯度]數組組成
現在,我希望使用地理空間服務查詢數據庫,以查找從user1到user2的距離
我怎么做?
這應該讓您開始
您需要在架構中定義一個屬性:
'location' : {
type: { type: String },
coordinates: []
},
並將屬性索引為2dsphere
yourSchema.index({'location' : "2dsphere"})
比您可以執行以下操作:
//Model.geoNear(GeoJSON, options, [callback]) need a GeoJSON point to search in radius
var point = { type : "Point", coordinates : [data.coordinates.long, data.coordinates.lat] };
YourModel.geoNear(point, { maxDistance : data.distance /coordinatesUtils.earthRadius, spherical : true }, function(err, results, stats) {
res.status(200);
res.json(results);
});
但是有幾件事要注意:
為了使球形查詢運算符正常運行,必須將距離轉換為弧度,並將弧度轉換為應用程序使用的距離單位。
轉換:距離到弧度:將距離除以球體(例如地球)的半徑,以與距離測量相同的單位。
弧度到距離:將弧度乘以要轉換距離的單位制中球體(例如地球)的半徑。
地球半徑約為3959英里(6371公里)。
從這里取
貓鼬中有一個錯誤 ,該錯誤將GeoJSON中的坐標剝離,並將它們像舊對一樣發送到mongo,這導致近距離運算以弧度而不是米為單位。
現在可能已修復,但我不確定。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.