我是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
感谢
答案 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 }
])