MongoError:没有针对geoNear的地理索引

时间:2018-12-10 06:33:38

标签: javascript node.js mongodb geojson

现在,我开始学习nodejs并在试验GeoJson数据。 我正在尝试查找通过的坐标100000m之内的所有忍者。 对于每种忍者模型,我都将其坐标存储在db中。

但是当我尝试发出get请求时,出现此错误。

  

UnhandledPromiseRejectionWarning:MongoError:没有地理索引   geoNear       在queryCallback(C:\ Users \ Administrator \ Desktop \ NodeJs \ Node Rest \ node_modules \ mongodb-core \ lib \ cursor.js:248:25)       在C:\ Users \ Administrator \ Desktop \ NodeJs \ Node Rest \ node_modules \ mongodb-core \ lib \ connection \ pool.js:532:18       在_combinedTickCallback(内部/进程/next_tick.js:132:7)       在process._tickCallback(internal / process / next_tick.js:181:9)

我的代码-

router.get('/ninjas', function(req, res){

Ninja.aggregate().near({
    near: { type: "Point", coordinates: [parseFloat(req.query.lng),parseFloat(req.query.lat)] },
    maxDistance: 10000,  // in 10k meters
    spherical: true,
    distanceField: "dist.calculated"
  }).then(function(ninjas){
      console.log(ninjas)
    res.send(ninjas)
  });
});

我的模式-

const GeoSchema= new Schema({
type:{
    type:String,
    default:"Point"
},

coordinates:{
    type:[Number],
    index:"2dSphere"
}
})

const NinjaSchema= new Schema({
name:{type: String,
required:[true,"Name is required"]

},

rank:{
type:String

},
available:{
type:Boolean,
default:false
},

geometry:GeoSchema
});


const Ninja= mongoose.model('ninja', NinjaSchema);

module.exports= Ninja

0 个答案:

没有答案