我的数据库中有一个场地列表,我希望按照与客户的距离顺序显示这些场地。
我对数据库的查询如下:
venueCollection.aggregate([
{
'$geoNear': {
'near': {
'type': 'Point',
'coordinates': [ user_lng , user_lat ]
},
'spherical': true,
'distanceField': 'dist'
}
},
{
'$sort': {
'dist': 1
}
}
], function (err, venues) {
// my code...
});
Run Code Online (Sandbox Code Playgroud)
一个简单的文档:
{
"_id" : ObjectId("56ec1c833e017f403870e2c5"),
"name" : "A & H",
"city" : "'s-Gravenhage",
"province" : "Zuid Holland",
"location" : {
"type" : "Point",
"coordinates" : [
4.276930300000004,
52.0732475
]
}
}
Run Code Online (Sandbox Code Playgroud)
它显示场地列表,该distance字段从最近到最远是正确的。
客户端我使用latitude和longitude(与我传递给服务器和场地相同)来计算与谷歌地图的距离:
var venuePosition …Run Code Online (Sandbox Code Playgroud)