我正在尝试使用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();
任何帮助将不胜感激。预先感谢!
答案 0 :(得分:0)
为latlang创建索引:
db.<schema>.createIndex({"latlang":"2dsphere"});
然后进行类似的查询
User.find({
latlang: {
$near: {
$geometry: {
type: "Point",
coordinates: coords
},
$maxDistance: 10000
}
}
})
希望这会有所帮助!