【发布时间】:2016-12-15 14:28:24
【问题描述】:
在我的 MongoDB 数据库中,我有大量的位置(坐标可以复制)。我正在尝试获取第一个最近的位置(经度/纬度)。在我的模型里面我有这个:
var mySchema = new Schema({
loc:{
type : [Number],
index: '2d'
},
...
});
我看到 MongoDB 实现了$near 方法来计算最近的位置。然后我尝试了这个
Model.find({loc: {$near:[1.4072964, 7.826107], $maxDistance: 1} }, function(err, result){
result.forEach(function(doc){
console.log(doc.loc)
})
});
问题是它会返回距离该点最近的所有位置,大约 1 米。但我不需要最大距离,我只想找到第一个最近的位置。
我不能为此使用findOne,因为我需要获取第一个位置的所有重复数据。
例如如果找到的第一个坐标是 -5.95001220703125, 51.5499954223633 并且我有 10 次这个位置,我需要获取所有具有这个位置的文档。
所以只用一次 Mongoose Query 就可以做到这一点吗?或者我不应该在我的应用程序中使用 MongoDB 地理空间索引并自己计算最近的距离?
【问题讨论】:
标签: javascript node.js mongodb mongoose geolocation