MogoTemplate基本入门(Mongodb数据库基本增删改查)

nosql 因为没有标准的 sql,各有各的操作方式,所以学习成本比较高。实际应用也不会去命令行直接操作,而是用编程语言的 api。

所以我们可以简单了解一下Mongodb,然后用java的Api去操作就行了

没必要花很大功夫在命令行上操作执行

先看看这个简单了解一下我们的Mongodb

【GeekHour】20分钟掌握MongoDB_哔哩哔哩_bilibili

然后看这个教程的15p-20p,来简单在IEDA上用MongoTemplate

15.整合SpringBoot集合操作_哔哩哔哩_bilibili

目录

mongodb应用场景

mongodb和mysql的对比

Mongodb的特点

Mongodb的启动和部署(基本入门)

show database

switched to db XXX

创建集合

insertOne()

ackonwledge

insertedId

查询user里面的数据

insertMany()插入多个数据

limit

sort()排序

skip()

查询level为3的用户 

限制返回字段的数目

$gt表示大于,$lt表示小于,$eq表示等于

level:{xxx查询条件}

exist是查询字段是否存在,而不能查询字段的值是否存在

默认会把多个条件组成一个and条件查询

正则表达式

countDocuments()

findOne()

updateOne()

updateMany  更新多个

deleteOne

deleteMany

Java中使用Mongodb

添加文档

Document

id

Field

Transient

编写实体类POJO,对应Mongodb

Mongodb会往集合中添加多一个class属性

插入一条数据save()和insert()

批量插入(注意类型错误)

查询文档

基于Criterial实现

查询

条件查询(Query())

多条件查询Cretial()

query.with()做排序分页和跳过

BasicQuery()传Json

参数名称要对应我们的POJO类

更新文档操作

setOnInsert()

upsert()

getModifiedCount()

updateFirst()

updateMulti()

upsert()

UpdateResult类型

Update类型

删除文档操作

删除所有文档

条件删除

remove()删除

dropCollection



mongodb应用场景

适用于高读写,高并发状态

mongodb和mysql的对比

 Mongodb:

是操作文档对象的

collections里面有多个文档

Mongodb的特点

高性能,高可用,高扩展

Mongodb的启动和部署(基本入门)

 推荐使用的连接工具

我使用的是mongodb自带的gui可视化工具

左边三个是我们的默认的数据库

三个分别是查询页面,数据库列表和性能监控界面

我们可以在终端输入help来查看我们的帮助文档

 

show database

test是我们当前默认的数据库

我们可以用show database来展示当前数据库

这是一个特点

只有我们往这个数据库里面插入数据的时候,我们的数据库才会被创建

switched to db XXX

 我们这样子来转换我们使用的数据库

创建集合

我们想创建一个用户集合

就是db.users

insertOne()

是我们插入一个文档到这个集合中

ackonwledge

表示是否成功插入

insertedId

表示插入成功后这个用户的Id

这个字段是mongodb自动生成的,它是一个全局的唯一ID

查询user里面的数据

db.users.find()

insertMany()插入多个数据

limit

限制返回的数据

 

sort()排序

1的话就是升序排序,-1的话就是降序排序

skip()

这里的skip(1),也就是我们跳过我们查询出来的第一个数据

查询level为3的用户 

mongodb的数据库类型是非常严格的

我们查询数字3,和查询字符“3”是不同的

限制返回字段的数目

限制返回字段的数目

我们要查询level为3的,然后我们查询到的数据只返回我们的name和email字段

我们的这个_id是自动返回的,我们不想要这个返回,我们就让这个变成0

这样子

$gt表示大于,$lt表示小于,$eq表示等于

level:{xxx查询条件}

in,查询是否存在

{level:{$in:[1,3]}}

exist是查询字段是否存在,而不能查询字段的值是否存在

exist是查询字段是否存在,而不能查询字段的值是否存在

 

例如我们是exist:1

这个email是null,我们也同样返回了

默认会把多个条件组成一个and条件查询

相同的

正则表达式

忽略大小写,我们就后面加个options然后+个i就可以了

countDocuments()

统计所有的数量

 count()也可以加查询条件

findOne()

找一条数据,一般都是返回第一条

updateOne()

如果更新的Mongodb字段不存在的话,我们会默认创建这个字段

updateMany  更新多个

deleteOne

deleteMany


Java中使用Mongodb

下面是我们的配置

首先确保我们的mongodb开启

首先引入Mongodb的起步依赖

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>

        </dependency>

编写配置文件进行配置

database是指定我们的mongodb的数据库

写个测试类测试一下

我们使用Navicat连接我们的mongodb数据库

成功创建


添加文档

 

Document

映射mongo中的一条文档数据

(value,collection)指定操作的集合名称

id

映射文档的_Id值

Field

将成员变量映射成文档中的一个key:value对

(name,value)指定文档中key的名称,默认为成员变量名

Transient

避免序列化,指定成员变量不参与文档的序列化

编写实体类POJO,对应Mongodb

我们不需要Mongodb去给我们创建Id,我们自己先传一个Id

Mongodb会往集合中添加多一个class属性

对应java中类的全限定路径,这样做是为了查询时可以把Document类型转换成java类型

插入一条数据save()和insert()

save()

如果存在,那么就修改这条数据insert()

插入,如果存在我们就不能插入,重复插入会抛出异常


批量插入(注意类型错误)

这样子写时错误的

因为我们Mongodb会默认我们的类是List类

所以我们要加多一个Employee.Class

这样就成功批量插入了


查询文档

基于Criterial实现

 Cretial.where

可以把多个条件组合在一起

查询

如果我们不往new Query()里面传东西,那么它和findAll()是等同的

findAll,findOne,findById

条件查询(Query())

条件查询就是构建我们的Query()对象

Query()写我们的查询

多条件查询Cretial()

我们的Cretial在我们的Query()里面来使用

Cretial() 是我们的多条件查询 and or,我们要把这个条件放入到我们的Query()里面

query.with()做排序分页和跳过

Sort.by()是根据什么进行排序

然后用Sort()写我们的排序条件

.skip()

.limt()


BasicQuery()传Json

我们还可以直接传我们的Json

然后我们就要使用BasicQuery(),然后把我们写好的Json传进去

其实如果使用Json,就相当于我们在命令行那样执行

参数名称要对应我们的POJO类

我们的name是java层面的,但数据库里面是username

我们有个Field字段,给它映射成username


更新文档操作

setOnInsert()

指定要插入的是id为11的数据

upsert()

没有符合条件的记录就插入数据

getModifiedCount()

updateFirst()

updateMulti()

upsert()

 

UpdateResult类型

我们update返回的类型是UpdateResult类型

Update类型

使用Update类型弄的对象,来设置我们的更新属性

updateFirst() 更新第一条

updateMulti()更新所有符合条件的

upsert() 有的话就更新,没有的话就插入这个数据

记得,我们的update()方法,要往里面传我们的Update类型


删除文档操作

分为

删除所有文档

条件删除

  

remove()删除

Query()写我们的条件

remove()用来删除

dropCollection

可以删除整个文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/685428.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《大道平渊》· 玖 —— 把高深的道理讲的通俗,这是一门艺术。

《平渊》 玖 "化繁为简, 点石成金。" 把高深的道理讲得通俗&#xff0c;这是一门艺术&#xff01; 讲述者能够站在群众的角度&#xff0c;用尽可能简单通俗的语言来解释复杂的概念。 讲述者需要对概念有深刻的理解&#xff0c;还要有灵活的表达能力。 群众愿意接受…

差分原理+练习

差分的原理和前缀和相似&#xff0c;我们先联想一下前缀和。 前缀和计算下标从0到n的和&#xff0c;记为sum[n1];如果想要求出[l,r]区间的和&#xff0c;可以快速的通过sum[r1]-sum[l]来得到 。 前缀和适用于需要多次获取指定连续区间和的情景 而差分即计算相邻两个元素的差…

pESC-HIS是什么,怎么看?-实验操作系列-2

01 典型的pESC-HIS质粒遗传图谱 02 介绍 质粒类型&#xff1a;酿酒酵母蛋白表达载体 表达水平&#xff1a;高拷贝 诱导方法&#xff1a;半乳糖 启动子&#xff1a;GAL1和GAL10 克隆方法&#xff1a;多克隆位点&#xff0c;限制性内切酶 载体大小&#xff1a;6706bp 5 测…

Ubuntu系统中Apache Web服务器的配置与实战

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

当高考遇上端午假期

端午就要到了&#xff0c;碰巧遇上高考&#xff0c;那就假期回家&#xff0c;给学子们让路。一家人在一起&#xff0c;陪着长辈&#xff0c;吃个香甜的粽子&#xff0c;话个家常&#xff0c;也教长辈这两个功能&#xff0c;何尝不是一种幸福 华为畅享70S伴你温情相聚。 长辈关…

RTA_OS基础功能讲解 2.8-Tick计数器

RTA_OS基础功能讲解 2.8-Tick计数器 文章目录 RTA_OS基础功能讲解 2.8-Tick计数器一、计数器简介二、计数器配置三、计数器驱动3.1 软件计数器驱动3.1.1 递增软件计数器3.1.2 静态计数器接口3.2 硬件计数器驱动3.2.1 Advancing硬件计数器3.2.2 回调函数四、在运行时访问计数器属…

shell的编程方式

文章目录 变量俩种方式第一种方式第二种方式 取消变量数组创建数组获取数组元素的方式 read输出的方式限制输入的方式 流程控制方式for循环输出的方式第一种方式第二种方式while循环输出的方式select选择输出的方式 判断方式判断的四种方式第一种方式第二种方式第三种方式 算术…

springboot+vue+mybatis房屋租贷系统+PPT+论文+讲解+售后

本论文系统地描绘了整个网上房屋租赁系统的设计与实现&#xff0c;主要实现的功能有以下几点&#xff1a;管理员&#xff1b;首页、个人中心、房屋类型管理、房屋租赁管理、会员管理、订单信息管理、合同信息管理、退房评价管理、管理员管理&#xff0c;系统管理&#xff0c;前…

parseInt函数

貌似遇到问题了&#xff0c;在Java中&#xff0c;parseInt方法是java.lang.Integer类的一个静态方法&#xff0c;它用来将字符串转换为基本数据类型int。如果字符串不能被解析为有效的整数&#xff0c;parseInt会抛出一个NumberFormatException。 原来是取整串转换&#xff0c;…

行心科技|中科利众:健康科技新合作,营养与科技融合前行

2024中国国际大健康产业文化节暨第34届国际大健康产业交易博览会于2024年5月31日在保利世贸博览馆盛大开幕&#xff0c;行心科技与中科利众&#xff08;贵州&#xff09;生物科技有限公司不谋而合&#xff0c;就“膳食机能健康问题解决方案”达成战略合作&#xff0c;共同开启膳…

Android——热点开关演讲稿

SoftAP打开与关闭 目录 1.三个名词的解释以及关系 Tethering——网络共享&#xff0c;WiFi热点、蓝牙、USB SoftAp——热点(无线接入点)&#xff0c;临时接入点 Hostapd——Hostapd是用于Linux系统的软件&#xff0c;&#xff0c;支持多种无线认证和加密协议&#xff0c;将任…

mmdetection的生物图像实例分割三:自定义数据集的测试与分析

mmdetection的生物图像实例分割全流程记录 第三章 自定义数据集的测试、重建与分析 文章目录 mmdetection的生物图像实例分割全流程记录前言一、测试集的推理1.模型测试2.测试数据解析 二、测试结果的数据整合三、生物结构的重建效果 前言 mmdetection是一个比较容易入门且上…

【Linux】Linux环境基础开发工具_5

文章目录 四、Linux环境基础开发工具Linux小程序---进度条git 未完待续 四、Linux环境基础开发工具 Linux小程序—进度条 上篇我们实现了一个简易的进度条&#xff0c;不过那仅仅是测试&#xff0c;接下来我们真正的正式实现一个进度条。 接着编写 processbar.c 文件 然…

java第二十课 —— 面向对象习题

类与对象练习题 编写类 A01&#xff0c;定义方法 max&#xff0c;实现求某个 double 数组的最大值&#xff0c;并返回。 public class Chapter7{public static void main(String[] args){A01 m new A01();double[] doubleArray null;Double res m.max(doubleArray);if(res !…

如何通俗易懂地理解大模型参数?

大型语言模型 (LLM) 的大小是通过参数数量来衡量的。举几个典型例子&#xff0c;GPT-3 有 1750 亿个参数&#xff0c;1750亿也可称为175B&#xff08;1B 10亿&#xff09;&#xff0c;Meta最新开源的Llama3 参数数量在 80 亿到 700 亿之间&#xff0c;智谱公司最新开源的GLM4-…

龙叔Linux:别名(alias)

在Linux中&#xff0c;别名&#xff08;alias&#xff09;是一个命令的简短形式&#xff0c;通常用于简化或替换更长的命令序列。你可以使用alias命令来创建、查看和删除别名&#xff0c;定制自己专属的命令。一、创建别名 1.1、临时创建 你可以使用alias命令在命令行中直接定…

【MySQL】数据库入门基础

文章目录 一、数据库的概念1. 什么是数据库2. 主流数据库3. mysql和mysqld的区别 二、MySQL基本使用1. 安装MySQL服务器在 CentOS 上安装 MySQL 服务器在 Ubuntu 上安装 MySQL 服务器验证安装 2. 服务器管理启动服务器查看服务器连接服务器停止服务器重启服务器 3. 服务器&…

web刷题记录(4)

[GKCTF 2020]cve版签到 进来应该是给了个提示了&#xff0c;就是要以.ctfhub.com结尾 还有一个超链接&#xff0c;这题的ssrf还是挺明显的&#xff0c;抓包看看 发现回显里面有提示 说是和本地有关&#xff0c;那么也就是说&#xff0c;要访问127.0.0.1&#xff0c;大概意思就…

搜索与图论:树的重心

搜索与图论&#xff1a;树的重心 题目描述参考代码 题目描述 输入样例 9 1 2 1 7 1 4 2 8 2 5 4 3 3 9 4 6输出样例 4参考代码 #include <cstring> #include <iostream> #include <algorithm>using namespace std;const int N 100010, M N * 2;int n, m…

2024 Q1企业级SSD市场暴涨,国产努力追赶!

在2024年第一季度&#xff0c;由于对高容量存储需求的激增&#xff0c;企业级固态硬盘&#xff08;SSD&#xff09;市场的收入实现了显著增长&#xff0c;达到了37.58亿美元&#xff0c;与上一季度相比增长了62.9%。这一增长主要得益于供应商减产导致的高容量订单需求未得到满足…