我无法使用Mongodb使用纬度和经度来获取记录

时间:2018-07-10 08:21:19

标签: mongodb

我正在尝试使用mongodb获取基于纬度和经度的记录。我已经看过很多例子,对我来说什么都没有。

这是我的架构结构。

latlang: {
  type: { type: String, default: 'Point'},
  coordinates: [Number]
}

存储值后看起来像

latlang:{
  type: "Point",
  coordinates: [77.6836, 12.8486]
}

我正在为latlang字段设置索引

schema.index({ 'latlang.coordinates' : '2dsphere' });

我有如下多个记录

latlang:{
  type: "Point",
  coordinates: [77.6836, 12.8486]
}

latlang:{
  type: "Point",
  coordinates: [77.5712, 12.9766]
} 

 latlang:{
  type: "Point",
  coordinates: [77.6174, 12.9226]
} 

当我尝试通过以下查询获取记录时,我得到的响应为空

User.find({ loc:{ $near:{ $geometry: {type: "Point" , coordinates:[77.6974,12.9591] }, $maxDistance:10000 }}}).exec();

任何帮助将不胜感激。预先感谢!

1 个答案:

答案 0 :(得分:0)

为latlang创建索引:  db.<schema>.createIndex({"latlang":"2dsphere"});

然后进行类似的查询

User.find({
latlang: {
    $near: {
        $geometry: {
            type: "Point",
            coordinates: coords
        },
        $maxDistance: 10000
    }
}
})

希望这会有所帮助!