mongodb - Mongodb 空间查询 $geoNear 与 $near

标签 mongodb mongoose geospatial

我在 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] }})

最佳答案

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

关于mongodb - Mongodb 空间查询 $geoNear 与 $near,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13826769/

相关文章:

javascript - 将新项目推送到 mongoDB 文档数组

r - 如何处理 GLMM 中的空间自相关残差

mongodb - 如何获取 mongodb 模式转储

mongoDB GeoJSON,查询两点或线附近

javascript - 设置查询以查看对象数组的特定索引

MySQL 地理空间查询 - 返回最近的行

sql - MongoDB中地理空间索引的内部机制

sql - 可以接受客户端 SQL 吗?如果可以,如何验证?

javascript - 无法在 MongoDB 拼接服务中搜索 ObjectID

mongodb - 在一个集合的所有文档中具有唯一值的数组