欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > MogoTemplate基本入门(Mongodb数据库基本增删改查)

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

2024/10/25 16:24:45 来源:https://blog.csdn.net/LUCIAZZZ/article/details/139509184  浏览:    关键词: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

可以删除整个文档

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com