学习笔记:MongoDB命令的基础学习,使用springboot实现mongodb视图创建

2023-11-01

学习笔记:MongoDB命令的基础学习,使用springboot实现mongodb视图创建

//创建集合
db.createCollection("my")
//查看集合
show collections
//删除集合
db.my.drop()
//插入一条,没有comment该集合,mongodb自动创建
db.comment.insert({"_id":"10002","articleid":"10000","content":"天气多云","userid":"1001","nickname":"Rose","createdatetime":new Date(),"likenum":NumberInt(10),"state":null})
//查询comment集合的所有数据
db.comment.find()
//插入多条
db.comment.insertMany([
{"_id":"10000","articleid":"10000","content":"天气多云","userid":"1001","nickname":"Rose","createdatetime":new Date(),"likenum":NumberInt(10),"state":null},
{"_id":"10001","articleid":"10001","content":"天气晴天","userid":"1002","nickname":"Rose","createdatetime":new Date(),"likenum":NumberInt(30),"state":"2"},
{"id":"10002","articleid":"10002","content":"天气阴天","userid":"1003","nickname":"Rose","createdatetime":new Date("2020-12-23 12:00:25"),"likenum":NumberInt(20),"state":"1"}])
//查询所有articleid=10000的数据
db.comment.find({"articleid":"10000"})
//查询第一条articleid=10000的数据
db.comment.findOne({"articleid":"10000"})
//显示articleid列的数据,默认显示_id列的数据
db.comment.find({articleid:"10000"},{articleid:1})
//显示articleid列的数据,不认显示_id列的数据
db.comment.find({articleid:"10000"},{articleid:1,_id:0})
//捕获错误
try{
db.comment.insertMany([
{"_id":"10000","articleid":"10000","content":"天气多云","userid":"1001","nickname":"Rose","createdatetime":new Date(),"likenum":NumberInt(10),"state":null},
{"_id":"10001","articleid":"10001","content":"天气晴天","userid":"1002","nickname":"Rose","createdatetime":new Date(),"likenum":NumberInt(30),"state":"2"},
{"id":"10003","articleid":"10002","content":"天气阴天","userid":"1003","nickname":"Rose","createdatetime":new Date("2020-12-23 12:00:25"),"likenum":NumberInt(20),"state":"1"}])
}catch(e){
	print(e)
}
db.comment.find()
//全局修改
db.comment.update({_id:"10000"},{likenum:1000})
//局部修改
db.comment.update({_id:"10001"},{$set:{likenum:1000}})
//局部批量修改数据
db.comment.update({userid:"1001"},{$set:{nickname:"jack"}},{multi:true})
//列值增长
db.comment.update({_id:"10001"},{$inc:{likenum.NumberInt(1)}})
//删除符合条件的
db.comment.remove({userid:"1003"})
//删除全部
db.comment.remove({})
//查询数量
db.comment.count()
//查询符合条件的数量
db.comment.count({userid:"1001"})
//查询前两条
db.comment.find().limit(3)
//跳过前两条数据,限制显示几条(可以用作翻页查询)
db.comment.find().skip(1).limit(2)
//按条件排序1为升序,0为降序
db.comment.find().sort({userid:1})
//复杂查询
//比较查询
db.comment.find({likenum:{$gt:NumberInt(70)}})
//正则查询
db.comment.find({content:/多云/})
//包含查询
db.comment.find({userid:{$in:["1002","1003"]}})
//条件连接查询
db.comment.find({$and:[{likenum:{$gt:NumberInt(70)}},{userid:{$in:["1002","1001"]}}]})
db.comment.find({$or:[{likenum:{$gt:NumberInt(70)}},{userid:{$in:["1002","1001"]}}]})
//查看索引
db.comment.getIndexes()
//创建索引
db.comment.createIndex({userid:1})
//删除索引
db.comment.dropIndex({userid:1})
//根据名字删除
db.comment.dropIndex("userid_1")
//删除所有
db.comment.dropIndexes() 

//查看语句的执行计划
db.comment.find({userid:"1001"}).explain()
//涵盖查询
//当条件和查询的投影仅包含索引字段时,mongodb直接从索引返回结果,而不扫描任何文档或将文档带入内存
db.comment.find({likenum:{$gt:NumberInt(70)}},{userid:1,_id:0})

//创建视图
db.createView(
	"union",//视图名称
	"cycle",//主表
	[
	//连接的副表 from副表名称 localField 副表id foreignField主表id as,主表和副表查询数据起的别名接收
		{$lookup:{from:"fetal_condition",localField:"cycle_id",foreignField:"cycle_id",as:"fetalCondition"}},
		//$unwind让数据以文档的形式呈现,没有则是数组形式,includeArrayIndex数组下标的别名 preserveNullAndEmptyArrays:true允许空数组存在
		{$unwind:{path:"$fetalCondition",includeArrayIndex:"index",preserveNullAndEmptyArrays:true}},
		{$lookup:{from:"follow_up",localField:"cycle_id",foreignField:"cycle_id",as:"followUp"}},
		{$unwind:{path:"$followUp",includeArrayIndex:"index",preserveNullAndEmptyArrays:true}},
	]
)
//删除视图
db.union.drop()
//查看视图数据
db.union.find()

mongodb创建视图,使用springboot实现mongodb视图创建
下面创建的视图和命令创建的效果一致。
查询视图数据和查询文档大差不差,如果有更好的方法,欢迎大家交流。
find方法后面可以点出来个过滤方法,我不知道怎么用,请各位指教

   List<Document> documents = mongoTemplate.find(new Query().addCriteria(条件,接收的类, 视图名);
public String createView(){
        String viewName="union";//视图名
        String sourceName="cycle";//主表名字
        LookupOperation lookupOperation1 = LookupOperation.newLookup()
                .from("fetal_condition")
                .localField("cycle_id")//主表的主键
                .foreignField("cycle_id")//副表的主键
                .as("fetalCondition");//接收副表数据起的别名
        LookupOperation lookupOperation2 = LookupOperation.newLookup()
                .from("follow_up")
                .localField("cycle_id")
                .foreignField("cycle_id")
                .as("followUp");
        //Unwind可以把数据拆成文档,接收的数据处理格式:接收副表数据起的别名,数组下标的别名,保留null和空数组
        UnwindOperation unwind1 = UnwindOperation.newUnwind().path("fetalCondition").arrayIndex("index").preserveNullAndEmptyArrays();
        UnwindOperation unwind2 = UnwindOperation.newUnwind().path("followUp").arrayIndex("index").preserveNullAndEmptyArrays();
        //包含所有条件
        Aggregation aggregation = Aggregation.newAggregation( lookupOperation1, unwind1, lookupOperation2, unwind2);
        /*System.out.println(aggregation.toString().indexOf("["));
        System.out.println(aggregation.toString().lastIndexOf("]"));*/
        String str=aggregation.toString().substring(aggregation.toString().indexOf("[")+1,aggregation.toString().lastIndexOf("]"));
        List<Bson> pipeline=new ArrayList<>();
        pipeline.add(Document.parse(str));
        mongoTemplate.getDb().createView(viewName,sourceName , pipeline);
        return this.existsView()? "视图创建成功" :"视图创建失败";
    }
 //删除视图
    public String dropView(){
        mongoTemplate.getCollection("union").drop();
        return this.existsView()? "视图删除失败" :"视图删除成功";
    }
//判断视图是否存在
    public boolean existsView(){
        return mongoTemplate.collectionExists("union");
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

学习笔记:MongoDB命令的基础学习,使用springboot实现mongodb视图创建 的相关文章

随机推荐

  • float浮动布局大战position定位布局

    华子目录 布局方式 普通文档流布局 浮动布局 浮动主要针对与black inline元素 float属性 浮动用途 浮动元素父级高度塌陷 position属性定位篇 相对定位 relative为属性值 配合left属性 和top属性使用 绝
  • SparkStreaming写入hbase数据库过程中,有空指针NullPointException产生如何处理以及RDD类型如何转换!!

    所用的软件版本 spark2 3 0 hbase1 4 6 IDEA2019 1 业务代码如下 package com bd spark import org apache kafka clients consumer ConsumerRe
  • 自定义CMD命令

    1 首先我们要创建一个自定义命令名 bat文件 例如 music bat 2 写入需要执行的命令 保存退出 例如 软件所在的绝对路径 3 键入win R 输入sysdm cpl 4 打开高级 gt 环境变量 gt 系统变量 gt Path
  • python的inspect模块

    http www cnblogs com walkerwang archive 2011 08 03 2125903 html 简介 发现python有个好用的检查模块 inspect 查看源文件发现它提供了不少好用的方法 Here are
  • Proteus中的继电器在哪里

    今天做仿真时候 用到了继电器 但是电路搭建好后发现怎么继电器上电不动作 发现是继电器选错了 然后找了一个最常用的继电器来用一试成功 所以就分享一下Proteus中的继电器在哪里 如图所示 我们先点一下第一步的元器件标志 然后在点一下旁边的标
  • 第三方软件测试环境搭建步骤流程

    在软件测试流程及各项环节中 不可避免的要进行测试环境的搭建 测试环境与开发环境不一样 比如说你要对APP进行功能测试或者性能测试 那就要模拟用户在使用APP时候的真实场景 客户会进行什么样的操作 所以测试环境需要尽可能的贴近真实环境进行 那
  • 智能优化与机器学习结合算法实现数据预测matlab代码清单

    作者简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 matlab项目合作可私信 个人主页 Matlab科研工作室 个人信条 格物致知 更多Matlab仿真内容点击 智能优化算法 神经网络预测 雷达通信 无线传感器 信号处理 图像
  • pandas中drop()函数用法

    函数定义 DataFrame drop labels None axis 0 index None columns None inplace False 删除单个行 import pandas as pd import numpy as n
  • 硬件第一节 三级管电路工作原理及详解

    文章目录 一 三极管辨认 1 1 辨认bce边 1 2 三极管工作状态 1 2 1放大状态 1 2 2 截止状态 1 2 3 饱和状态 二 三极管使用 2 1 三极管作为开关管 三 三极管选型 3 1 参数 3 2 常用三极管参数整理 一
  • rm刷新了我的认知

    大家好 我是良许 创建 删除和修改文件是用户在 Linux 系统中执行的非常常见操作 大家都知道 在 Linux 系统里使用 rm 命令删除单个文件时 几乎一瞬间就完成了 但是如果文件数量很大 那么删除操作就需要很长时间才能完成 你有没想过
  • mdl格式是什么软件生成的_【原创】slx文件与mdl文件的差别

    slx文件是二进制格式文件 mdl文件是文本格式文件 早期Simulink的模型文件为mdl格式 slx格式在Matlab Simulink R2012a版本中引入 旨在取代以前的mdl格式 由于slx被压缩 通常文件大小会比相同的mdl文
  • 2023跨年烟花(浪漫烟花+自定义音乐+雪花飘飘+自定义文字)

    效果 介绍 可以自定义跨年文字 可自定义更换背景音乐 具有雪花效果 项目文件index html gameCanvas 4 0 js script js index html文件
  • SQL select into from 和 insert into from 语句

    在刷笔试题的时候看到一个表的复制的问题 以前没见过 写一下 用于创建表的备份复件 复制表 两条SQL语句 1 insert into tableName2 column name1 column name2 select column na
  • >> << & 操作符总结

    lt lt 符号 扩大多少倍 Integer num 16 num num lt lt 2 System out println num gt gt gt gt gt num gt gt 符号 缩小多少倍 Integer num 16 nu
  • 沈师 PTA 数据库题目及部分解析 第五章

    判断题 1 当主外健不能保证参照完整性和数据一致性时 还可以选择触发器来实现 T 2 域完整性是保证数据完整性的重要约束之一 T 3 当用户违反了参照完整性时 DBMS会采取一些策略加以处理 包括拒绝 级联操作和设置为空值 T 4 参照完整
  • m1 mac安装docker、k8s(成功案例)

    m1 mac安装docker k8s 成功案例 一 安装docker 二 安装kubernetes ps 系统 macos 12 monterey 一 安装docker 1 先要清理旧数据 讲道理这一步重不重要我还真没试过 毕竟在docke
  • 问题 C: 销售排行榜

    题目描述 你的任务是帮助淘宝网店店长整理销售数据 根据累计的销售记录 将所有商品按销售数量降序排列 输入 输入包括多行数据 行数小于100000 每行数据包括4个信息 分别是商品名称 销售数量 单价 成交日期 商品名称由小写字母组成 且不超
  • Android JNI

    选择你的到处路径和名称JAR file 直接Finish 这样的jar包里面只包括编译后的AdMob class 很小很干净 然后打开羽化的Unity工程AdMobTest File gt Open Project 双击UnityAdMob
  • Linux下安装ORACLE(一周成果、全是干货!)

    文章目录 一 安装前言 1 闲聊 2 提前知道的事 二 安装准备 1 Linux发行版本 ret hat7 4 更换yum源 传送门 https blog csdn net qq 42956179 article details 10961
  • 学习笔记:MongoDB命令的基础学习,使用springboot实现mongodb视图创建

    学习笔记 MongoDB命令的基础学习 使用springboot实现mongodb视图创建 创建集合 db createCollection my 查看集合 show collections 删除集合 db my drop 插入一条 没有c