Node.js 如何使用geoNear查询MongoDB?
我尝试使用聚合函数geoNear和near来定位距离,这取决于使用mongodb的经度和纬度Node.js 如何使用geoNear查询MongoDB?,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,我尝试使用聚合函数geoNear和near来定位距离,这取决于使用mongodb的经度和纬度 `router.get('/devops' , (req,res,next) => { /* Devops.find({}) .then((alldevops) => { res.send(alldevops); }) */ Devops.aggregate().near({ near: [parseFloat(req.query.lng)
`router.get('/devops' , (req,res,next) => {
/*
Devops.find({})
.then((alldevops) => {
res.send(alldevops);
})
*/
Devops.aggregate().near({
near: [parseFloat(req.query.lng), parseFloat(req.query.lat)],
maxDistance: 100000,
spherical: true,
distanceField: "dist.calculated"
}).then((alldevops)=>{
res.send(alldevops);
});
});`
我得到一个错误,上面写着
MongoError:geo-near在查询GeoJSON点时只接受一个参数。找到额外字段:$maxDistance:100000.0
首先,您的模式应该类似于下面指定的jeo.json格式
{
"other_key":"other_key_type"
// this is important
"geometry": {
"type": "Point",
"coordinates": [Number] // it is [latitude, longitude], yes it is reverse way
}
}
现在,您已经有了使用该模式将数据插入数据库的模式
现在,您可以通过以下示例对数据应用地理近距离概念
YourModal.aggregate([
{
$geoNear: {
near: { type: 'Point', coordinates: [16.51194, 80.735627] },
distanceField: 'dist.calculated',
includeLocs: 'dist.location',
spherical: true
}
},
{
$project: {
dist: 1
}
}
])
在这里你会得到很多选择,但我已经从给定坐标中取出了唯一的距离。
我认为这将给出一个从数据库实现geoNear查询的简单想法