我正在尝试在Mongoose中加载一个文件,如果它让我们说距当前纬度/经度坐标10公里。
所以,让我说我有这个对象:
{
lat: -33.9493992,
lon: 151.1114885
}
在我的Mongoose数据库中,我有一个集合,此集合中的每个文档也都有save lat-lon键。我怎样才能从给定坐标中获取一定距离的条目?
例如,我想只抓取距离上面坐标10公里的文件。
我将不胜感激。
修改 我的代码:
初始化模型:
var schema = new mongoose.Schema({
title: String,
title: String,
coordinates: {
type: [ Number ],
default: [0, 0],
index: '2dsphere'
}
});
global.models.Point = mongoose.model('Point', schema);
试图在模型中找到的代码: router.route(' /点/:纬度/:LON') .get(function(req,res){ console.log(' lat:' + req.params.lat +' lon:' + req.params.lon);
global.models.Point.find({
coordinates: {
$near: {
$maxDistance: 100 / 111.12,
$geometry: {
type: 'Point',
coordinates: [req.params.lon, req.params.lat]
}
}
}
}, function (err, res) {
if (err) {
return console.log(err);
}
console.log(res);
});
});
对象存储在数据库集合中:
{
"_id" : ObjectId("56ea103eefedec96b6d4b203"),
"title" : "Some title",
"coordinates" : [
5.2260167,
52.3500607
]
}
答案 0 :(得分:0)
在您的架构中,您需要将字段定义如下:
location: {
type: [ Number ],
default: [ 0, 0 ],
index: '2dsphere'
}
然后你就可以对它进行搜索操作:
Model.find({
location: {
$near: {
$maxDistance: 100/111.12, // 100km
$geometry: {
type: "Point",
coordinates: [151.1114885, -33.9493992] // [lon, lat]
}
}
}
}).exec(callback);
$maxDistance
的说明:
1° latitude = 69.047 miles = 111.12 kilometers