Mongo空间查询$geoNear与$near的区别

3
我会翻译中文。这段内容是关于编程的,讲述了在Mongo中进行空间查询的问题。需要找到距离旧金山10英里以内的所有场馆。使用$geoNear命令和$near命令得到的结果不同,但由于使用Mongoose,需要使用$near命令。$geoNear命令可以正常工作,运行该命令即可。
db.runCommand({geoNear:"venues",near:[-122.418,37.775], maxDistance:10/69});

我通过距离排序,得到了10英里半径范围内的结果。很好。

但是当我运行$near命令时,却没有得到任何结果:

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

据我所知,它们是相同的命令。我有遗漏吗?如果我删除$maxDistance,我确实会得到结果,并且它们按距离正确排序。但是,我也会得到距离超过10英里的结果。
db.venues.find({loc: {$near: [-122.418,37.77] }})

只是想知道为什么最大距离是10/69。它应该是10/3963。距离/地球半径使用相同的单位。 - Venkat Kotra
1个回答

11

您需要在{$near} JSON文档内部拥有 $maxDistance : 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 } })


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接