在将它们分组之前计算成员数

时间:2016-11-29 07:53:02

标签: mongodb

这是我的文件:

member: [
    {
        name: 'Jack',
        group: 0
    },
    {
        name: 'Rose',
        group: 0
    },
    {
        name: 'Tom',
        group: 1
    }
]

首先,计算成员数量,然后将它们分组。

返回:

{
    count: 3,
    member: [
        [
            {name: 'Jack'},
            {name: 'Rose'}
        ],
        [
            {name: 'Tom'}
        ]
    ]
}

怎么办?非常感谢你!

1 个答案:

答案 0 :(得分:0)

首先,您应该使用member中的$size来计算$project数组大小,然后在unwind member之后对其进行分组,并在下面查询:

db.collectionName.aggregate({
    "$project": {
    "count": {
        "$size": "$member"
    },
    "member": 1
    }
}, {
    "$unwind": "$member"
}, {
    "$group": {
    "_id": "$member.group",
    "data": {
        "$push": {
            "name": "$member.name"
        }
    },
    "count": {
        "$first": "$count"
    }
    }
}, {
    "$group": {
    "_id": "$count",
    "member": {
        "$push": "$data"
    }
    }
}).pretty()
相关问题