通过对多个集合进行分组来进行Mongodb聚合查询

时间:2016-12-08 19:23:02

标签: mongodb aggregation-framework

我在mongodb有两个收藏。

请求收集

  1. _id
  2. IPADDRESS
  3. createdon
  4. geoip collection

    1. _id
    2. IPADDRESS
    3. 国家
    4. 城市
    5. geoip是IP地址的查找表,在这里是唯一的。

      我需要以下结果,以查找每个国家/地区的请求总数。换句话说,以下2列。

      country和recordcount(来自基于ipaddress的请求集合)

      由于这需要将2个单独的集合分组并将它们组合起来得到结果,所以我在这里不知所措。

1 个答案:

答案 0 :(得分:3)

您需要使用$lookup阶段操作,该操作用于与其他集合执行连接并获取结果。然后将所选字段分组到所需的计数。

[
 {$lookup: {
    from: 'geoip',
    localField: 'ipaddress',
    foreignField: 'ipaddress',
    as: 'data'
 }},
 {$unwind: 'data'},
 {$group: {_id: '$data.country', count: {$sum: 1}}}

]