我们如何使用聚合分组用于不同的匹配案例?

时间:2016-09-30 07:45:32

标签: mongodb mongoose aggregation-framework

我有用户数据

   users = [{
      name : 'z',
      movie : 'yes',
      finance : 'no'
    },
{ 
    name : 'zee',
    movie : 'no',
    finance : 'yes'},
{
    name : 'zoo',
    movie : 'yes'
    }]

我需要将它们分组为

{
totalUsers : 3,
movieWatch : 2,
financeUsed : 1,
financeNotDone : 1 }

我尝试了解聚合但发现我们可以为一场比赛做到这一点,或者像我没有正确理解请帮帮我

我是新手聚合概念。

1 个答案:

答案 0 :(得分:2)

可以试试

db.getCollection('collectionName').aggregate([
    {$group:{
        _id: null,
        totalUsers: {$sum:1},
        movieWatch: {$sum: {$cond: [ { $eq: [ "$movie", 'yes' ] }, 1, 0 ]}},
        financeUsed : {$sum: {$cond: [ { $eq: [ "$finance", 'yes' ] }, 1, 0 ]}},
        financeNotDone  : {$sum: {$cond: [ { $eq: [ "$finance", 'no' ] }, 1, 0 ]}}
        }}
]);