2012-12-11 30 views
3

我在做Mongo的空间查询。我需要找到旧金山10英里内的所有场地。在命令行中,当使用$ geoNear(works)vs $ near(不起作用)时,我得到了不同的结果。我需要使用$附近,因为我正在使用Mongoose并使用$ near。

$ geoNear works。我运行此命令:

db.runCommand({geoNear:"venues",near:[-122.418,37.775], maxDistance:10/69}); 

,我得到的距离排序结果,在10英里半径范围内。大。

但后来我跑这个$附近指挥和我没有得到任何结果:

db.venues.find({loc: {$near: [-122.418,37.775] }, $maxDistance:10/69}) 

从我所知道的,它们是相同的命令。我错过了什么吗?如果我删除$ maxDistance,我确实会得到结果,并且它们按距离正确排序。但是,我也得到了超过10英里的结果。

db.venues.find({loc: {$near: [-122.418,37.77] }}) 
+0

只是想知道为什么最大距离是六十九分之一十。它应该是10/3963。相同单位的地球距离/半径。 –

回答

9

你需要有$ maxDistance:在{$}附近的JSON文件内X - 你拥有它外面。

变化db.venues.find({loc: {$near: [-122.418,37.775] }, $maxDistance:10/69})

db.venues.find({loc: {$near: [-122.418,37.775], $maxDistance:10/69 } })

+1

辉煌!这正是问题所在。谢谢。 – emilebaizel