场景1:根据用户分组,查询相同的用户下,同时包含多个角色

db.getCollection('Sys_RT_Rel_Role_User').aggregate([
{$group:
{
_id: "$USER_CD", // 根据什么字段分组
"ROLE_CD": {"$push": "$ROLE_CD"}, //根据USER_CD分组,然后把ROLE_CD放进列表里
count: {$sum:1}
}
},
{$match:
{"ROLE_CD": {$all: ["GATE_ROLE_DF_FILL","GATE_ROLE_DF_CITY_MANAGER"]}} //根据上面放进列表的ROLE_CD,查询同时包含多个角色
},
])
当match在group之前类似于SQL的where操作,在group之后类似于SQL的having操作
场景2:根据两个字段分组查询重复的
db.getCollection('Sys_RT_Rel_Role_User').aggregate([
{
$group: {
_id: {
role_cd: '$ROLE_CD',
user_cd: '$USER_CD'
},
count: {
$sum: 1
}
}
},
{
$match: {
count: {
$gt: 1
}
}
}
])