首页 > 数据库 >SpringBoot Mongodb实战整合

SpringBoot Mongodb实战整合

时间:2022-11-30 16:22:06浏览次数:49  
标签:实战 group SpringBoot Mongodb TeacherDevelopConstant Aggregation project 数组 teache

目录

找出数组中, 具有 qid=1并且reorderFlag=0的记录

  • mongod
{ "qList": { $elemMatch: { "qid": 1, "reorderFlag": 0} } }

找出数组中, qid=1 或者 reorderFlag=0的记录

  • mongod
{ "qList.qid": 1, "qList.reorderFlag": 0}

新增数组数据

  • java
update.push("teacher." + indexCode, JSON);

修改数组数据,根据条件批量修改嵌套数组的字段值

  • mongod
db.teacher_index.update({level:1}, {$set:{"fields.$[].canEdit":1, "fields.$[].canSync":0}}, {multi:true, upsert:true})
  • java
afterValueJSON.keySet().forEach(fieldCode -> {
    update.set("teacher." + indexCode + ".$." + fieldCode, afterValueJSON.get(fieldCode));
});

删除数组数据,根据条件删除数组对象

  • java
import com.mongodb.BasicDBObject;
update.pull("teacher." + indexCode, new BasicDBObject(TeacherDevelopConstant.ARRAY_DATA_ID, dataId));

聚合(Aggregation.group),动态组装group聚合字段

  • java
GroupOperation group = Aggregation.group("code")
                .first("code").as(TeacherDevelopConstant.TEACHER_DATA_CODE)
                .first(TeacherDevelopConstant.CARD_ID).as(TeacherDevelopConstant.CARD_ID)
                .first(TeacherDevelopConstant.UNIT_NAME).as(TeacherDevelopConstant.UNIT_NAME)
                .first(TeacherDevelopConstant.USER_NAME).as(TeacherDevelopConstant.USER_NAME);
for (String indexName : unwindIndexMap.keySet()) {
	group = group.push(indexName + ".dataId").as(indexName);
}

聚合(Aggregation.group),统计字段类型出现的次数。

类似于MySQL的SUM(IF(status = '男', 1, 0))

  • java
Aggregation.group("code")
        .sum(ConditionalOperators.when(Criteria.where("status").is(1)).then(1).otherwise(0)).as("processedNum")

聚合(Aggregation.project),将数据字段转换成需要的Class字段输出

  • java
Aggregation.project(
        Fields.from(
                Fields.field("indexName", "indexNames"),
                Fields.field("approvers"),
                Fields.field("title"),
                Fields.field("ruleCode", "code")
        )
);

聚合(Aggregation.project),计算数组的长度

  • mongod
[{
    $project: {
        "teacherDataCode": 1,
        "userName": 1,
        "teacher.zfsbspasp": {
            $size: {
                $ifNull: ['$report.teacher_zfsbspasp', []]
            }
        },
        "teacher.jsdzfsb": {
            $size: {
                $ifNull: ['$teacher_jsdzfsb', []]
            }
        },

    }
}]
  • java
ProjectionOperation project = Aggregation.project("teacherDataCode", "unitCode", "unitName", "userName");
for (StatsIndexConfig index : qo.getConfigList()) {
    project = project.andExpression("{$size: {$ifNull: {'$report.indexNamed', {}}}}", "[]").as("report."+index.getIndexName());
}

这个需要注意:project.andExpression方法需要把[]替换成{}

标签:实战,group,SpringBoot,Mongodb,TeacherDevelopConstant,Aggregation,project,数组,teache
From: https://www.cnblogs.com/JOKI/p/16938752.html

相关文章

  • Vue3+Ts+Vite+Pinia后台管理项目实战
    一、新建有一个文件夹命名cms二、使用VsCode打开cms文件夹,在终端中执行命令npminitvue@latest这一指令将会安装并执行create-vue,它是Vue官方的项目脚手架工具。......
  • 三. 基于Jenkins与Gitlab的CI/CD及DevOps实战 -2
    基于Jenkins与Gitlab的CI/CD及DevOps实战DevOps介绍:OPS部分职责:1.通过监控、告警、人工值守等方式保证应用程序的7*24的可用性。   2.系统选型、基础环境初始......
  • SpringBoot 如何实现异步编程
    https://blog.csdn.net/m0_60028455/article/details/121650608 首先我们来看看在Spring中为什么要使用异步编程,它能解决什么问题?为什么要用异步框架,它解决什么问题?在......
  • 基于SpringBoot+Layui的物业管理系统【完整项目源码】
    使用建议业务逻辑简略,需要细化业务,增加业务开发,如未交费提醒等技术架构数据库:MySQL8.X后端技术:SpringBoot2.3.0,MyBatisPlus数据连接池:Druid前端技术:La......
  • springboot整合quartz达到动态配置定时任务的效果
    如题:首先贴上maven的配置<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId>......
  • 论项目中日志处理的正确操作(springboot案例)
    理论和日志的重要不需要重复,各位都明白,企业中甩锅 查询记录  必要的东西,直接贴上代码案例 maven<dependency><groupId>org.springframework.boot</groupI......
  • SpringBoot整合Swagger生成接口文档
    介绍:Swagger是一款RESTFUL接口的文档在线自动生成+功能测试功能软件。本文简单介绍了在项目中集成swagger的方法和一些常见问题。如果想深入分析项目源码,了解更多内容,见......
  • springboot项目同时支持http和https访问
    首先使用https需要一个server.keystore,生成教程可以然后开始改动项目:配置文件中填入server.keystore的信息server.ssl.key-store=server.keystoreserver.ssl.key-alias=tomc......
  • Mongodb删除操作
    不管是数据库还是操作系统的文件,进行删除操作需要谨慎,确认确认再确认。MongoDB提供以下方法来删除集合中的文档delete、drop、remove。drop操作会删除集合及索引文件。1、......
  • MongoDB升级
    因业务需要所以需要对mongoDB客户端jar包升级,在此记录一些过程1、jar包替换,引入依赖3.2.2: mongo-java-driver    |    4.6.1: mongo-driver-sync......