2016-09-30 58 views
0

我有一个用户数据我们如何将不同的匹配情况用于聚合?

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 } 

我试图理解骨料却发现,我们可以为一个匹配或者像我有没有正确的理解去做,请帮我出

我是新来的聚合概念。

+2

[如何一点点搜索?](http://stackoverflow.com/search?q=%5Baggregation-framework%5D+%24sum+%24cond+%24+group) – styvane

回答

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 ]}} 
     }} 
]);