Node.js和Mongoose返回2D查询
Node.js and Mongoose return 2D query
我有一个简单的问题,我试图在Node.js服务器中查询后返回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 }
] } )
我的问题是:
- 如何通过
res.send()
函数根据req.query
(exp=query.exp)和其余参数返回文档 - 如何根据坐标(coords)和当前位置
(lng , lat)
的范围进行搜索,换句话说,从坐标创建一个半径,所有匹配的作业都将以json形式返回
您不需要重新发明轮子。你的方法不会考虑地球的曲率,所以如果距离很大,你的计算就会不准确。
我建议使用MongoDB
已经支持的地理空间索引。
更新
例如,您可以使用$centerSphere
运算符,该运算符返回中心点半径范围内的文档(示例取自该点)。
{
<location field>: {
$geoWithin: { $centerSphere: [ [ <x>, <y> ], <radius> ] }
}
}
要做到这一点,您需要以GeoJSON格式存储坐标(只需要在html5坐标中添加几个元字段)。
相关文章:
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- j查询utc offSets的时差
- 如何有效地将游戏数据存储在URL查询字符串中
- 如何处理node.js节点mongodb中的连接和查询队列
- 如何从 HTML 查询中删除项目
- 从查询字符串参数推断出正确的数据类型
- 将curl查询转换为jQuery.ajax()
- 触发媒体查询断点时刷新页面
- 使用DynamoDB查询返回
- 当查询不在displayField中时,引导Ajax Typeahead不显示结果
- 如何将PHP get查询转换为Meteor's HTTP.get()
- AngularJS:获取链接中没有哈希的查询字符串值
- 捕获初始RedQueryBuilder查询中的SQL问题
- AngularJS,如何更改查询字符串
- 具有大型几何图形的基于沙发的空间查询
- 在php中提交数据时,如果某些值为null,而某些值为非null,如何进行查询
- o数据扩展查询在SystemUserRolesSet上不起作用
- Xpath运行缓慢的查询
- Solr查询以按日期月份获取数据&年
- Node.js和Mongoose返回2D查询