我从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运行命令的确切语法不太满意。
答案 0 :(得分:1)
geoNear,在本机MongoDB驱动程序中可用,因此在mongoose中扩展,将搜索文档中的所有地理索引,并且可以多次返回它,您可以传递参数uniqueDocs以确保您拥有没有重复的条目。
collection.geoNear(50, 50, {uniqueDocs:true}, function(err, docs) {
});
另一种方法是对特定字段进行近似查询,但您可能需要对距离值进行一些转换才能获得正确的范围。我不记得我的想法会是什么。实验的最佳位置是mongoshell,然后将其转换为node.js的命令。