0

我使用 mongo 的“$near”查询,它按预期工作,为我节省了大量时间。

现在我需要执行一些更复杂的事情。想象一下,我们有一个“签到”集合(让我们使用四方符号),其中包含地理空间信息(没有什么不寻常的:只有纬度和经度)和时间。鉴于两个人的签到,我如何找到他们的“彼此靠近”签到?我的意思是,例如:“1/23/12 你已经离开了 100 米”

最简单的解决方案是选择第一个用户的所有签入,并在框架端为每个第一个用户签入找到最近的签入(我使用 ruby​​)。但它是最有效的解决方案吗?你有更好的想法吗?可能我需要某种特殊的索引吗?

最佳,罗马

4

1 回答 1

1

MongoDB GeoSpatial 索引提供两种类型的查询:$near 和 $within。$near 查询返回数据库中位于请求点特定范围内的所有点,而 $within 查询列出数据库中特定区域(框、圆或任意多边形)内的所有点。

MongoDB 目前不提供一个查询,该查询将返回与另一组点的任何成员在一定距离内的所有点,这似乎是您想要的。

您可以想象使用来自 user1 的点数据来构建描述“感兴趣区域”的多边形,然后使用 $within 查询来查看该区域内是否有其他人签到。如果您在位置和日期上使用复合索引,您甚至可以将查询限制为特定日期在该区域内的人。

参考:

于 2012-07-24T20:37:02.463 回答