0

我正在尝试找出一种对两个集合进行地理查询的方法:

  1. Person {name, age, groupid}
  2. Groups (id, name, geoLocation[x,y])

我需要找到所有附近的团体age > 18

知道如何在不必查询每个找到的人的组的情况下做到这一点吗?

4

1 回答 1

1

您在 MongoDB 中没有连接,因此您需要找到另一种解决方法。

我会想到的下一个可行的方法是将一组年龄范围与组记录一起存储:

{
    _id: {},
    name: {},
    geoLocation: {},
    age_groups: {
        'gt18': 1
    },
}

然后我会查询那个age_groups.gt18 字段并提取所有记录。当然,这确实意味着您将需要一些东西来使该字段保持最新。有几种方法:

  • MR(Map Reduce)这实际上需要先输出到汇总表,所以我真的不推荐这个。
  • 基于事件的预聚合。当用户加入或离开组时,您会得到他们的年龄并相应地更新聚合字段。

我个人会选择基于事件的预先聚合的做事方法

于 2012-08-09T16:50:21.220 回答