【问题标题】:Mongo spatial query $geoNear vs $nearMongodb空间查询$geoNear vs $near
【发布时间】:2012-11-29 09:22:10
【问题描述】:

我正在 Mongo 中进行空间查询。我需要找到旧金山 10 英里范围内的所有场地。在命令行中,使用 $geoNear(有效)与 $near(无效)时,我得到了不同的结果。我需要使用 $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。相同单位的距离/地球半径。

标签: mongodb mongoose geospatial


【解决方案1】:

您需要在 {$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 } })

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-20
    • 1970-01-01
    • 2015-04-23
    • 1970-01-01
    • 1970-01-01
    • 2014-03-06
    • 1970-01-01
    • 2013-07-06
    相关资源
    最近更新 更多