第三十一章:MongoDB的集成和使用

前言

上一章节,简单讲解了如何集成 。本章节,我们来看看如何集成 的 。 是最早热门非关系数据库的之一,使用也比较普遍。最适合来存储一些非结构数据了,适合对大量或者无固定格式的数据进行存储,比如:日志、缓存等。

一点知识

MongoDB简介

SpringBoot集成MongoDB

准备工作

MongoTemplate方式

MongoRepository方式

参考资料

总结

最后

老生常谈

一点知识

以下部分关于 介绍,来自网站:https://www.mongodb.com/cn 、纯洁的微笑

MongoDB简介

(来自于英文单词“Humongous”,中文含义为“庞大”)是可以应用于各种规模的企业、各个行业以及各类应用程序的开源数据库。作为一个适用于敏捷开发的数据库, 的数据模式可以随着应用程序的发展而灵活地更新。与此同时,它也为开发人员 提供了传统数据库的功能:二级索引,完整的查询系统以及严格一致性等等。 能够使企业更加具有敏捷性和可扩展性,各种规模的企业都可以通过使用MongoDB来创建新的应用,提高与客户之间的工作效率,加快产品上市时间,以及降低企业成本。

是专为可扩展性,高性能和高可用性而设计的数据库。它可以从单服务器部署扩展到大型、复杂的多数据中心架构。利用内存计算的优势, 能够提供高性能的数据读写操作。 的本地复制和自动故障转移功能使您的应用程序具有企业级的可靠性和操作灵活性。

简单来说, 是一个基于分布式文件存储的数据库,它是一个介于关系数据库和非关系数据库之间的产品,其主要目标是在键/值存储方式(提供了高性能和高度伸缩性)和传统的RDBMS系统(具有丰富的功能)之间架起一座桥梁,它集两者的优势于一身。

支持的数据结构非常松散,是类似 的bson格式,因此可以存储比较复杂的数据类型,也因为他的存储格式也使得它所存储的数据在Nodejs程序应用中使用非常流畅。

传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。MongoDB对于关系型数据库里的表,但是集合中没有列、行和关系概念,这体现了模式自由的特点。

中的一条记录就是一个文档,是一个数据结构,由字段和值对组成。MongoDB文档与JSON对象类似。字段的值有可能包括其它文档、数组以及文档数组。MongoDB支持OS X、Linux及Windows等操作系统,并提供了Python,PHP,Ruby,Java及C++语言的驱动程序,社区中也提供了对Erlang及.NET等平台的驱动程序。

MongoDB的适合对大量或者无固定格式的数据进行存储,比如:日志、缓存等。对事物支持较弱,不适用复杂的多文档(多表)的级联查询。

SpringBoot集成MongoDB

得力于 方便性,集成 也是很简单的。可通过三种方式进行访问,分别是: 、 以及 。原生的方式需要连接其语法规则,这里就不阐述了,毕竟不熟悉。还是使用封装好的吧,开箱急用!

准备工作

本文示例的MongoDB版本为:4.0.3。可视化工具为:studio-3t-x64。

至于 如何安装,大家简单百度下就好了,很简单。下载个 ,直接安装即可。

下载地址:https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-ssl-4.0.3-signed.msi

0.加入POM依赖。

1.创建实体。

这里注意:@Document(collection="notify_msg") 表示:操作的集合为: 。这个可手动使用工具创建下。

另外,针对 注解,也和之前的 用法一直,创建时会自动赋值,需要在启动类中添加 注解使其生效!

同时,可使用 注解,可指定存储的键值名称,默认就是类字段名。如设置 后,效果如下:

2.配置文件中填写连接地址。

注意,这里填写格式

单机模式:mongodb://name:pwd@ip:port/database

集群模式:mongodb://name:pwd@ip1:port1,ip2:port2/database

3.启动类编写。

注意:当使用 时,可能有些 类不在默认的包路径(启动类路径)下,可使用 的 需要扫描的路径信息。若都在默认的包路径下,可以不加此注解的。

MongoTemplate方式

以下示例下 方式进行数据操作。

0.创建一个接口类:

1.接口实现类,引入 。

针对查询,可以使用 对象进行构造查询条件。其提供的方法如下:

具体使用时,可根据实际情况进行组合查询条件。

针对 和 也需要注意下:

在无 情况下,两者都能进行新增操作。

存在 ,同时记录库里不存在,两者都是进行插入操作。

存在 ,同时库里也存在记录, 相当于进行更新操作。而 直接就异常了。

2.创建示例控制层。

3.启动应用,使用 进行访问。

新增:http://127.0.0.1:8080//template/add

可以看见,已经返回对应的信息,同时数据库也可看见记录了。

其他的都是类似的,大家可自行访问下:

根据日期返回列表信息:http://127.0.0.1:8080//template/find/list/具体日期

根据ID删除:http://127.0.0.1:8080/template/del/具体ID值

根据消息号查询:http://127.0.0.1:8080//template/find/具体消息号

MongoRepository方式

以上还需要自己编写一些类啥的,现在是 的方式进行操作数据,优雅,简单。

0.创建资源类

这里需要注意一个地方:和上一章节的自定义sql不同之处是,参数索引值从 开始。

同时,要注意查询的语法。具体用法,可查看:https://docs.spring.io/spring-data/mongodb/docs/1.10.14.RELEASE/reference/html/#mongodb.repositories.queries 这里简单截图下:

1.编写示例控制层。

2.启动应用,使用 ,访问具体的方法,就可以看见相关结果了。

新增:http://127.0.0.1:8080/repository/add

根据消息日期查询:http://127.0.0.1:8080/repository/find/sql/具体日期

根据消息号查询:http://127.0.0.1:8080//template/find/具体消息号

也可直接利用可视化工具,直接查看数据信息

参考资料

https://docs.spring.io/spring-data/mongodb/docs/1.10.14.RELEASE/reference/html

https://docs.spring.io/spring-boot/docs/1.5.15.RELEASE/reference/htmlsingle/#boot-features-mongodb

https://www.mongodb.com/cn

http://www.ityouknow.com/springboot/2017/05/08/springboot-mongodb.html

总结

本章节主要介绍了 的集成和简单的使用。相关更加详细的用法,可取官网查阅下,若使用 模式,基本和上章节讲的 用法差不多,有些细微差别,就是自定义查询sql上了,毕竟一个是关系型数据库,一个是 数据库,查询的语法还有略有不同的。而使用 还是 ,就看个人喜好了。自从接触了 后,是倾向于前者的,毕竟真的比较简单呀!想多复杂用法的大家自定查阅官网信息吧。

最后

目前互联网上很多大佬都有 系列教程,如有雷同,请多多包涵了。原创不易,码字不易,还希望大家多多支持。若文中有所错误之处,还望提出,谢谢。

老生常谈

个人QQ:

微信公众号:

完整示例:https://github.com/xie19900123/spring-boot-learning/tree/master/chapter-31

系列

如果你觉得文章不错,欢迎点赞分享到朋友圈

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181101G0EBX500?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券