如何在mongoose中执行地理空间查询

时间:2015-09-24 05:40:13

标签: mongodb mongoose geospatial

我在NodeJS上使用了mongoose并且具有以下模型:

var Post = new Schema({
  ...
  location: [Number, Number],
  ...
});
Post.index({ location: '2d' });
Post.set('autoIndex', false);
module.exports = mongoose.model('Post', Post);

当用户对所有帖子进行查询时,他们可以在附近添加一个可选的查询参数,以查找位于附近的位置

的帖子
GET /api/1.0/posts?near=12.3244,-1.23244

为了实现这一点,我正在做以下事情:

if(req.query.near) {
  var loc = req.query.near.split(',');
  var area = { center: loc, radius: 10, unique: true, spherical: true };

  if(loc.length === 2) {
    query
      .where('location')
      .within()
      .circle(area);
  }
}

然后我执行查询。 我是使用this mongoose文档

完成的

我有3个问题:

  1. 半径,英里或公里的单位是多少?
  2. 我是否将半径除以3963.2,就像完成here(地球的赤道半径)一样,或是猫鼬处理那个?
  3. 独特意味着什么? (上面)和球形?我假设球形意味着使用mongo的$ centerSphere而不是$ center,是吗?
  4. 我很感激任何帮助,尤其是问题2和1 谢谢:))

0 个答案:

没有答案