Node.js 和 Mongoose return 二维查询
Node.js and Mongoose return 2D query
我有一个简单的问题,我试图在我的 Node.js 服务器中查询 return 一个 MongoDB 文档 :
var coords = [];
coords[0] = req.query.valArray.lng; // client latitude
coords[1] = req.query.valArray.lat; // client longitude
var distanceInKM = req.query.valArray.rangeKM; // the range
//the query that its results i want to return by res.send()
db.Jobs.find( {
$and: [ { {exp: req.query.valArray.exp} },
{ field: req.query.valArray.field }
] } )
我的问题是:
- 如何根据
req.query
(exp = query.exp ) return 文档和 res.send()
函数的其余参数。
- 如何根据当前位置
(lng , lat)
的坐标 (coords) 和范围进行搜索,换句话说,从坐标创建一个半径,所有匹配的作业都将 return 作为 json.
您不需要重新发明轮子。您的方法不会考虑地球的曲率,因此如果距离很大,您的计算将不准确。
我建议使用 MongoDB
已经支持的 Geospatial Indexes。
更新
例如,您可以使用 $centerSphere
运算符,它 returns 记录距离中心点的半径范围内的文件(示例取自那里)。
{
<location field>: {
$geoWithin: { $centerSphere: [ [ <x>, <y> ], <radius> ] }
}
}
为此,您需要以 GeoJSON 格式存储坐标(您只需向 html5 坐标添加一些元字段)。
我有一个简单的问题,我试图在我的 Node.js 服务器中查询 return 一个 MongoDB 文档 :
var coords = [];
coords[0] = req.query.valArray.lng; // client latitude
coords[1] = req.query.valArray.lat; // client longitude
var distanceInKM = req.query.valArray.rangeKM; // the range
//the query that its results i want to return by res.send()
db.Jobs.find( {
$and: [ { {exp: req.query.valArray.exp} },
{ field: req.query.valArray.field }
] } )
我的问题是:
- 如何根据
req.query
(exp = query.exp ) return 文档和res.send()
函数的其余参数。 - 如何根据当前位置
(lng , lat)
的坐标 (coords) 和范围进行搜索,换句话说,从坐标创建一个半径,所有匹配的作业都将 return 作为 json.
您不需要重新发明轮子。您的方法不会考虑地球的曲率,因此如果距离很大,您的计算将不准确。
我建议使用 MongoDB
已经支持的 Geospatial Indexes。
更新
例如,您可以使用 $centerSphere
运算符,它 returns 记录距离中心点的半径范围内的文件(示例取自那里)。
{
<location field>: {
$geoWithin: { $centerSphere: [ [ <x>, <y> ], <radius> ] }
}
}
为此,您需要以 GeoJSON 格式存储坐标(您只需向 html5 坐标添加一些元字段)。