腾讯做网站,企业信息系统类型,it初学者做网站,荆门网站建设电话咨询前言 通过Elasticsearch整合章节的学习#xff0c;我们了解SpringData框架以及相应的衍生查询的方式操作数据读写的语法。MongoDB的相关操作也同样是借助Spring Data框架#xff0c;因此这篇文章的内容比较简单#xff0c;重点还是弄清楚MongoDB的使用场景以及如何通过Sprin…前言 通过Elasticsearch整合章节的学习我们了解SpringData框架以及相应的衍生查询的方式操作数据读写的语法。MongoDB的相关操作也同样是借助Spring Data框架因此这篇文章的内容比较简单重点还是弄清楚MongoDB的使用场景以及如何通过Spring Data来操作MongoDB。希望对正在学习的小伙伴有帮助~~~ 文章目录
前言
一、整合MongoDB实现文件存储
1.1 MongoDB的应用场景
1.2 Window下Docker安装
1.3 基本概念
1.4 MongoRepository
1.5 常用注解
1.6 浏览历史记录的实现流程
总结 一、整合MongoDB实现文件存储 MongoDB是一个由C语言编写的基于分布式文件存储的数据库它是非关系数据库中功能最丰富最像关系数据库的。它支持的数据结构非常松散是类似json的bson格式因此可以存储比较复杂的数据类型。总的来说MongoDB是文档型的NoSQL数据库数据以文档对应关系型数据库的记录的形式在MongoDB中保存数据结构由Key-Value键值对组成。
1.1 MongoDB的应用场景 在传统的关系型数据库中对于已经成倍增加的个人信息社交网络地理位置操作日志等用户数据进行数据挖掘显得有点吃力NoSQL数据库可以比较好的处理这些数据量大的数据。而MongoDB作为一种NoSQL数据库相比于关系型数据库更能满足要求更高的数据存储需求比如High performance数据库高并发读写需求、Huge Storage海量数据的高效率存储和访问的需求、High Scalability High Availability对数据库的高可扩展性和高可用性的需求。
总结起来MongoDB适用的场景一般有如下的三个特点
并发要求高且读写频繁数据量大数据价值较低对事务要求不高
一般用在存储用户浏览记录、日志记录、游戏中的用户数据、社交工具中的用户数据、第三方信息的抓取存储等。
1.2 Window下Docker安装
安装mongodb的步骤可以参考下面的文章
https://developer.aliyun.com/article/999689
这里我的安装命令是这样的 #拉取镜像
docker pull mongo:4.2.5#启动容器并分配持久化数据卷
docker run -p 27017:27017 --name mongo ^
-v 你想要的持久化数据卷的数据保存地址^
-d mongo:4.2.5 --auth#进入容器的命令
docker exec -it mongo mongo 1.3 基本概念
名词
对于不同数据库中的名词我们还是有必要对比着来记忆
SQLMongoDB含义 database database 数据库 table collection 数据库表 | 集合 row document 数据记录行 | 文档 column field 数据字段 | 域 index index 索引 primary key primary key 主键,MongoDB自动将_id字段设置为主键
基本命令 //使用数据库
use test
//插入数据
db.article.insert({name:MongoDB})
//删除数据库
db.dropDatabase()
//查看所有的数据库
show dbs//集合命令
db.createCollection(lzddl)
show collections
db.article.drop()//文档命令
//插入db.集合对象.insert(文档对象)
db.collection.insert(document)
//获取所有文档db.集合对象.find({})
db.collection.find({})
//查询指定文档
db.collection.find(query, projection)
/*
*更新文档
*/
db.collection.update(query,update,{multi: boolean}
)
// query修改的查询条件类似于SQL中的WHERE部分
// update更新属性的操作符类似与SQL中的SET部分
// multi设置为true时会更新所有符合条件的文档默认为false只更新找到的第一条db.collection.save(document)//删除
db.collection.remove({title:MongoDB}) 1.4 MongoRepository接口 在脚手架的场景中我们使用MongoDB来实现会员商品浏览历史记录的存储。与前面的Elasticsearch的使用相同我们还是借助Spring Data框架来操作相应的数据读写操作。在上一篇文章中荔枝也对Spring Data提供的Repository接口及其子接口的关系及其各自的功能做了梳理可以在荔枝的项目学习专栏中找到 项目学习_荔枝当大佬的博客-CSDN博客 跟ES中提供的接口ElasticsearchRepository类似Spring Data也提供了一个MongoRepository接口通过继承该接口并在其中定义抽象的衍生查询方法我们就可以实现Spring操作MongoDB数据库的读写数据操作。还是老规矩我们来看看接口的继承关系 这里我们了解一下新出现的QueryByExampleExecutor接口该接口是一个查询接口我们可以通过使用实体类的示例对象来构建查询条件并且只提供需要用于查询的非空字段而其他字段会被忽略。我们使用该接口中的方法时仅需要一个Example对象这个Example类型的对象包含传进来的实体类probe、匹配规则matcher。
这里有一篇写的不错的源码剖析https://blog.csdn.net/listeningsea/article/details/122378964 有兴趣的话可以看看~~~
使用的方法包括继承接口都是类似的我们可以通过衍生查询来定义一个按照时间倒序获取用户浏览记录方法 public interface MemberReadHistoryRepository extends MongoRepositoryMemberReadHistory,String {/*** 根据会员id按时间倒序获取浏览记录* param memberId 会员id*/ListMemberReadHistory findByMemberIdOrderByCreateTimeDesc(Long memberId);
} 通过Spring Data框架的整合我们确实在操作不同的中间件的数据读写的时候变得更加的简单了
1.5 常用注解
名称作用 Document 标示映射到MongoDB文档上的领域对象 Id 标示某个字段为ID域 Indexed 标示某个字段为MongoDB的索引字段 Field 配置MongoDB持久化保存文档时要使用的字段的名称 CompoundIndex 复合索引加复合索引后通过复合索引字段查询将大大提高速度。 GeoSpatialIndexed 地理位置索引 TextIndexed 全文索引
1.6 浏览历史记录的实现流程
首先我们需要定义好一个实体类存放用户的浏览记录的历史信息。 /*** auther lzddl* description 用户商品浏览历史记录*/
Data
EqualsAndHashCode
Document
public class MemberReadHistory {Idprivate String id;Indexedprivate Long memberId;private String memberNickname;private String memberIcon;Indexedprivate Long productId;private String productName;private String productPic;private String productSubTitle;private String productPrice;private Date createTime;
}接着在功能接口的实现类中调用继承MongoRepository接口的MemberReadHistoryRepository接口中的抽象衍生查询方法以及相应的父类接口继承下来的方法实现用户浏览数据的读写操作。比如创建用户浏览数据的功能方法 Autowiredprivate MemberReadHistoryRepository memberReadHistoryRepository;Overridepublic int create(MemberReadHistory memberReadHistory) {memberReadHistory.setId(null);memberReadHistory.setCreateTime(new Date());memberReadHistoryRepository.save(memberReadHistory);return 1;}具体来说创建浏览记录我们会调用MemberReadHistoryRepository下的save()将实体类对象直接存储到MongoDB中批量删除调用的是deleteAll将包含要删除的用户浏览数据memberReadHistory对象从MongoDB中删除而对于展示所有的用户浏览数据我们也在衍生查询中定义相关操作。 总结 在这篇文章中荔枝主要梳理了MongoDB整合进mall脚手架的知识点内容不多但还是要与前面的博客联系在一起看会比较好哈哈哈。接下来荔枝会继续将最后的两个中间件的场景和整合过程中梳理的知识进行总结。 今朝已然成为过去明日依然向往未来我是荔枝在技术成长之路上与您相伴~~~
如果博文对您有帮助的话可以给荔枝一键三连嘿您的支持和鼓励是荔枝最大的动力
如果博文内容有误也欢迎各位大佬在下方评论区批评指正