monodb中的多个累加器对象

时间:2019-03-20 11:17:58

标签: mongodb mongodb-query aggregation-framework

我是mongo db的新用户,我正在编写查询以根据以下查询中我呼叫集合的通话时间来获取前三名客户

db.getCollection("dailylogs20190314").aggregate([
  {
    $match: { company_name: { $in: ["TCS PVT LTD - FIXED LINE", "TCS -SON"] } }
  },
  {
    $group: {
      _id: "$customer_msisdn",
      max_duration: { $sum: { $toInt: "$duration" } }
    }
  },
  { $sort: { max_duration: -1 } },
  { $limit: 3 }
]);

此查询给我的结果如下

_id            max_duration
-------------- ------------
924230000000  | 11988005
922136172600  | 1185000
922136182353  | 3381

但是我也想针对每一行使用company_name

_id            max_duration   company_name
-------------- ----------------------------
924230000000  | 11988005  |   TCS -SON
922136172600  | 1185000   |   TCS -Fixed Line
922136182353  | 3381      |   TCS -Fixed Line

感谢

1 个答案:

答案 0 :(得分:1)

在应用$first阶段之后,您需要使用$group累加器返回第一个文档。

db.getCollection("dailylogs20190314").aggregate([
  { "$match": {
    "company_name": { "$in": ["TCS PVT LTD - FIXED LINE", "TCS -SON"] }
  }},
  { "$group": {
    "_id": "$customer_msisdn",
    "max_duration": { "$sum": { "$toInt": "$duration" } },
    "company_name": { "$first": "$company_name" }
  }},
  { "$sort": { "max_duration": -1 } },
  { "$limit": 3 }
])