2017-05-07 37 views
0

我试图聚集在此集合,我需要找到任何一个特定的团队的胜利和损失MongoDB的平行GROUPBY

{ 
"team1" :"ruby", 
"team2" :"jade", 
"winner" :"ruby" 
}, 
{ 
"team1" :"jade", 
"team2" :"ruby", 
"winner" :"jade" 
} 

{ 
"team" :"ruby", 
"wins" :1, 
"loss" :1 
}, 
{ 
"team" :"jade", 
"wins" :1, 
"loss" :1 
} 

我能想到的唯一的事情为三通过这样的团体查询,并以同样的名称为他们打气

aggregate(
      [{ 
       $group: { 
        _id: "$winner", 
        wins: { $sum: 1 } 
       } 
      } 
      ]) 

是否有可能获得胜利和低在单个查询的SSE

回答

1

您可以使用[]括号映射领域的阵列,然后$unwind & $groupteam$cond$sumwinsloses

db.collection.aggregate({ 
    $project: { 
     winner: 1, 
     team: ["$team1", "$team2"] 
    } 
}, { 
    $unwind: "$team" 
}, { 
    $group: { 
     _id: "$team", 
     wins: { 
      $sum: { 
       $cond: [{ 
        $eq: ["$winner", "$team"] 
       }, 1, 0] 
      } 
     }, 
     loses: { 
      $sum: { 
       $cond: [{ 
        $eq: ["$winner", "$team"] 
       }, 0, 1] 
      } 
     } 
    } 
})