Mongoose无法找到$ geoNear查询的索引

时间:2016-03-22 10:13:24

标签: mongoose geolocation

尝试根据位置查询模型时出现此错误。

1 个答案:

答案 0 :(得分:0)

在SO上结合一些答案之后,这是完整的实现。

<强>模型

// model.js
var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var ModelSchema = new Schema({
  location: {
    type: [Number],
    index: '2dsphere'
  }
});

ModelSchema.index({ location: 1});

module.exports = mongoose.model('model', ModelSchema);

<强>控制器

// controller.js
Model = require('path/to/model')
exports.getByLocation = function(req, res, next) {
  var coords = [+req.query.lon, +req.query.lat];

  Model.where('location').near({
      center: {
          type: 'Point',
          coordinates: coords
      }
    })
    .then(function(docs) {
      res.json(docs);
    })
    .catch(next);
}

希望这会有所帮助:)