在MongoDB的地理空间和节点中使用URL参数
问题描述:
可能是一个非常基本的问题。我发送了一个URL(例如localhost:3000/services?lat=50&long=30
)。我想抓取网址的纬度和长度,并将其放置在Geospacing查询中。目前的代码不会产生屏幕上的任何东西,但它确实记录正确的价值观为纬度和长:在MongoDB的地理空间和节点中使用URL参数
exports.findAll = function(req, res) {
var lat = req.query.lat;
var long = req.query.long;
console.log(lat + long);
db.collection('services', function(err, collection) {
collection.find({ loc: { $geoWithin: { $centerSphere: [ [ lat, long ] ,
100/3963.2 ] } } }).toArray(function(err, items) {
res.send(items);
});
});
};
答
Sussed它。
需要在lat和long变量上使用parseInt
。谢谢。
所有参数实际上都是“字符串”,因此您需要在其中您希望使用数值的位置使用“parseFloat”(通常坐标为浮点数)。但是你也有错误的顺序,因为MongoDB中的地理空间数据需要在'['longitude','latitude']的顺序中。这在每个操作员身上都有很好的记录。即。 **重要**框中的['$ centerSphere'](https://docs.mongodb.org/manual/reference/operator/query/centerSphere/),只是在页面的下方。 –