Mongo空间查询$ geoNear vs $ near

emi*_*zel 3 geospatial mongoose mongodb

我在Mongo做空间查询.我需要找到旧金山10英里范围内的所有场地.从命令行开始,当使用$ geoNear(works)vs $ near(不起作用)时,我会得到不同的结果.我需要使用$ near因为我正在使用Mongoose并且它使用$ near.

$ geoNear有效.我运行这个命令:

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

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

但后来我运行这个$ near命令,我得不到任何结果:

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

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

db.venues.find({loc: {$near: [-122.418,37.77] }})
Run Code Online (Sandbox Code Playgroud)

Asy*_*sky 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 } })