2012-06-27 31 views
1

我從mongodb doc看到,那db.runCommand與geoNear的返回距離也是mongodb:可以找到一個2d的索引返回距離嗎?

我用的貓鼬在Node.js和受想知道如果同樣可以用Model.find實現({ '祿':{$附近:LNG,LAT],$ maxDistance:5/111.12 },.....)

如果您有多個2d索引,runCommand和geoNear不起作用。我在一個集合中有2個2d索引。一個在模式中定義,另一個是DbRef的一部分。

另外,我並不是很自在地使用與mongoose一起使用runco​​mmand的確切語法。

回答

1

geoNear,它在本地MongoDB驅動程序中可用,因此通過貓鼬擴展,將搜索文檔中的所有地理索引,並可以在那裏多次返回,您可以傳遞參數uniqueDocs以確保沒有重複條目。

collection.geoNear(50, 50, {uniqueDocs:true}, function(err, docs) { 
}); 

另一種方法是對特定字段進行近查詢,但可能必須對距離值進行一些轉換以獲得正確的範圍。我不記得那會是什麼。實驗的最佳地點是mongoshell,然後將它轉換爲node.js的命令。

+0

我發佈了一個更長的回答,在這裏使用本地驅動程序的geoNear:http://stackoverflow.com/a/11825138/856403。但要回答最初的問題:目前使用'find'時無法獲得距離。 – Timm

相關問題