0
在我的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
這是因爲我需要獲取這個第一個位置的所有重複數據。
E.g.如果找到的第一個座標是-5.95001220703125, 51.5499954223633
,並且我有這個位置10次,則需要獲取包含此位置的所有文檔。
所以有可能只用一次Mongoose Query來做到這一點?或者我不應該使用MongoDB地理空間索引並在我的應用程序中自己計算最近的距離?
我試過了,但我的查詢需要4秒鐘才能搜索到一個非常慢的值。 – John