请注意,this的另一个问题不是我要的内容。它正在查找两个查询的交集内的所有点。我只想检查两个圆/多边形是否相交。
我的应用程序允许附近的用户亲自见面。用户注册我的应用程序时,他们将提供其位置。此后,他们定义了一个特定半径的圆圈,在该圆圈内,他们可能愿意结识其他用户。也就是说,他们告诉我服务器的半径,以后可以在$centerSphere
查询中使用它。
当用户搜索要在其附近聚会的用户时,我想返回所有他们愿意在其半径内相交的用户与搜索该用户的半径相交的用户。
也就是说,假设在下图中,圆圈代表半径,用户Alice,Bob和Charlie将分别在该半径内见面。
如果用户爱丽丝搜索附近的用户,那么她应该看到查理,而不是鲍勃,因为爱丽丝和鲍勃的边界相交。如果Bob搜索附近的用户,他将看到Charlie,但不会看到Alice。最后,如果查理搜索附近的用户,他将同时看到爱丽丝和鲍勃。
我想知道是否可以使用MongoDB执行这种查询。
这是我认为的一种潜在方法。当用户定义会议区域(根据其位置选择半径)时,将该圆近似为多边形-例如,具有32个以上的边。将该多边形作为GeoJSON存储在用户文档中。
当另一个用户进行搜索时,请查询$geoIntersects
和$centerSphere
,该查询应返回与中心球相交的所有用户。听起来不错吗?
谢谢。