场景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 } } } ])
场景3:替换某个字段(ADDVCD)指定字符串,将0000——>替换为0100
db.getCollection("Sys_RT_Unit").find({"DZ_INIT_FLAG":"0"}).forEach(//循环获取目标数据 function(item) { var message = item['ADDVCD']; message = message.replace(/0000/g, '0100'); //目标字符串替换,/g 标识全局变量直接解决raplaceAll不支持方案,可以替换多个串 db.getCollection('Sys_RT_Unit').updateOne({ "_id": item['_id'] }, { $set: { "ADDVCD": message } }); //修改目标字段,完成替换 });
标签:RT,group,Mongo,记录,db,getCollection,CD,ROLE,查询 From: https://www.cnblogs.com/Donnnnnn/p/17878854.html