mongodb:可以找到2d索引返回距离吗?

时间:2012-06-27 04:53:02

标签: node.js mongodb mongoose spatial-index

我从mongodb doc看到,db.runCommand还有 geoNear返回距离

我在node.js中使用mongoose而想知道是否可以实现相同使用Model.find({'loc':{$ near:[lng,lat],$ maxDistance :5 / 111.12},......)

如果您有多个2d索引,则运行带有geoNear的runCommand不起作用。我在一个集合中有2个2d索引。一个在模式中定义,另一个是DbRef的一部分。

另外,我对使用mongoose运行命令的确切语法不太满意。

1 个答案:

答案 0 :(得分:1)

geoNear,在本机MongoDB驱动程序中可用,因此在mongoose中扩展,将搜索文档中的所有地理索引,并且可以多次返回它,您可以传递参数uniqueDocs以确保您拥有没有重复的条目。

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

另一种方法是对特定字段进行近似查询,但您可能需要对距离值进行一些转换才能获得正确的范围。我不记得我的想法会是什么。实验的最佳位置是mongoshell,然后将其转换为node.js的命令。