首页 > 其他分享 >Mongo查询记录

Mongo查询记录

时间:2023-12-06 09:56:30浏览次数:35  
标签:RT group Mongo 记录 db getCollection CD ROLE 查询

 

场景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

相关文章

  • 使用技巧 | 红米 Redmi Note 12 Turbo优化记录(去广告等)
    原文链接:https://engapi.com/article/7569原文也是我写的。我的红米Redminote8pro6+128已有些卡顿,遂在K70推出之际下单了RedmiNote12Turbo16+1T当备机。以下记录红米Note12Turbo去广告和优化过程,小米/红米系列都可参考。1.去广告系统设置参考这里:小米/红米手机如何......
  • 使用ThinkPHP框架根据Excel内容批量处理图片名称详解记录
    ThinkPHP依赖以下环境Nginx+PHP,建议提前装好Composer,PHP、Composer需要设置好系统环境变量。1.通过Composer安装Laravel框架composercreate-projecttopthink/thinkthinkphp6启动服务测试cdthinkphp6phpthinkrun然后就可以在浏览器中访问http://localhost:8000如果不能显示......
  • vue 树形选择器数据处理 + 搜索查询时每一层级都可选
    vue树形选择器主要用后端处理显示数据根据el-Element官网可知,想要使用树形选择器<el-tree-select>就要提供以下形式的数据:data=[{value:'1',label:'Levelone1',children:[{value:'1-1',label:'Leveltwo1-1&......
  • elasticsearch聚合查询实践
    目录概念聚合分类聚合语法聚合作用范围及排序聚合原理及terms精准度聚合实验桶聚合指标聚合Pipeline聚合实践一:多商户数据权限聚合分页实践二:多维度嵌套聚合实践三:删除ES索引重复数据附:实验环境概念用于聚合的字段必须是exactvalue,即doc_value=true。分词字段不可进行聚......
  • Sequelize的聚合查询查出messsage表中userId字段再user表中的用户信息
    这里记个一对多的,其他类似模型正常写,然后:入口文件main.js//...importmodelRelationfrom"./services/modelRelation";//...//同步模型和数据库modelRelation();modelRelation.js//import{Sequelize}from"sequelize";importsequelizefrom"./pool&quo......
  • 记录--Vue使用CDN引入,响应式失效?
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助背景最近心血来潮,想要在本地开发时,也用CDN的方式引入Vue,想着既然通过CDN引入了,那么在项目中就没必要再importVue,然后把项目中引入Vue的地方都删掉,结果改完后,界面看似正常运行,但数据变更后,界面没有重新渲染。......
  • 【MySQL】回收普通用户对其他库的查询权限,普通用户只能看见自己的表
    如何解决已回收权限的普通用户对其他库的查看权限?正常来说,普通用户自己创建的数据库表的权限无法被回收,如果用户曾经被授权过所有权限,取消权限后,依然可以看见其他库。其原因就是被授予了grantoption权限,需要手动取消"WITHGRANTOPTION"是MySQL中的一个选项,用于将授予权限给其......
  • ORM跨表查询
     ORM跨表查询、join查询、聚合查询、分组查询、FQ查询跨表查询分为两类:基于对象查询(子查询)基于双下划线查询(join查询)1、基于对象的跨表查询(sql语句:子查询)子查询:基于一个查询结果作为另一个查询的条件1.1一对多"""正向查询:多找一,按字段反向查询:一找多,按......
  • 图片相关问题记录
    1.cross-fade()半透明图片cross-fade()可以混合两个或多个图像,并按比例混合它们的不同部分。这个函数的语法如下:兼容性:chrome和safari,firefox不支持cross-fade(<image1>[,<image2>][,<percentage>])/*图片半透明带颜色*/background-image:-webkit-cross-fade(url......
  • 学习记录-CAN通信配置
    CAN通信配置1、MCU时钟配置在MCU配置里面点击“+”进行添加时钟,这里我选择配置的CAN5通信口,时钟频率为2.4E7,可添加分频,更改时钟频率 2、Port-IO口配置在原理图中找到CAN5对应的IO口,在软甲中,直接勾选CAN口,做映射处理即可。 3、CAN配置点击“+”添加一个CAN口,我这里选择......