【发布时间】:2014-06-22 21:13:08
【问题描述】:
Mongo 中地理搜索的所有示例和实现,我已经能够找到,使用数组属性 [lng, lat] 来执行搜索:
一个示例记录是:
{
name: 'foo bar',
locations: [
{
name: 'franks house',
geo: [-0.12, 34.51]
},
{
name: 'jennifers house',
geo: [-0.09, 32.17]
}
]
}
结果查询:
db.events.find({ 'locations.geo': { $nearSphere: [ -0.12, 34.51 ], $maxDistance: 0.02 }})
这很好用,但记录的格式不适合用户读取或写入,因为它不是自记录 lat 和 lng 在该数组中的位置。有陷阱的空间。我想让记录更人性化:
{
name: 'foo bar',
locations: [
{
name: 'franks house',
lat: 34.51,
lng: -0.12
},
{
name: 'jennifers house',
lat: 32.17,
lng: -0.09
}
]
}
对于这种类型的记录,生成的 mongo 查询会是什么样子?我还没有找到任何这样的例子,所以想知道这是否可能。
【问题讨论】:
-
如果您想使用您提供的 mongo 地理运算符来保持 [lon, lat] 格式。无论如何,只是一个旁注,通常“用户”不应该直接从数据库中读取/写入(MVC?)。
-
这是一个 REST API,我需要最简单的方法来返回 JSON 结果。它不需要与数据库结构完全一样,但是我必须做的数据格式越少,响应时间就越快。