Mongo查询记录

发布时间 2023-12-06 09:52:45作者: 布鲁布鲁sky

 

场景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
            }
        }
    }
])