当前位置: 首页 > news >正文

免费网站建设360公关团队

免费网站建设360,公关团队,做图素材的网站有哪些,百度seo排名规则前言 通过Elasticsearch整合章节的学习,我们了解SpringData框架以及相应的衍生查询的方式操作数据读写的语法。MongoDB的相关操作也同样是借助Spring Data框架,因此这篇文章的内容比较简单,重点还是弄清楚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 MongoRepository<MemberReadHistory,String> {/*** 根据会员id按时间倒序获取浏览记录* @param memberId 会员id*/List<MemberReadHistory> 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脚手架的知识点,内容不多但还是要与前面的博客联系在一起看会比较好哈哈哈。接下来荔枝会继续将最后的两个中间件的场景和整合过程中梳理的知识进行总结。

今朝已然成为过去,明日依然向往未来!我是荔枝,在技术成长之路上与您相伴~~~

如果博文对您有帮助的话,可以给荔枝一键三连嘿,您的支持和鼓励是荔枝最大的动力!

如果博文内容有误,也欢迎各位大佬在下方评论区批评指正!!!

http://www.hkea.cn/news/683910/

相关文章:

  • 做写字楼用哪个网站更好郑州seo代理外包
  • 做网站 淘宝营销策划思路
  • 网页设计要用到什么软件聊城seo优化
  • 用wordpress做网站百度推广管理
  • 一个空间可以放两个网站吗html模板网站
  • 做试用网站的原理网站推广优化平台
  • 软件工程培训机构学费亚马逊seo什么意思
  • 做恶搞网站软件有哪些苏州seo怎么做
  • 怎么做微信小说网站企业网络营销策划方案
  • 网站后台上传图片失败百度下载免费安装最新版
  • 镇江做网站需要多少钱企业网站模板设计
  • 西安seo优化系统网页seo
  • 如何用网站模板做网站广州网络营销推广
  • 承德手机网站建设seo推广排名
  • wordpress块引用一个网站可以优化多少关键词
  • 360网站卖东西怎么做的无锡seo优化公司
  • 邢台人民网站百度视频推广怎么收费
  • 常州天启建设公司网站高端快速建站
  • ppt模板免费下载网站不用登录seo测试工具
  • 四川建设人才网官网查询阜新网站seo
  • 太原网站开发定制百度网盘官网下载
  • 业主装修日记那个网站做的好片多多可以免费看电视剧吗
  • 租车网站建设站长之家源码
  • 昌吉州回族自治州建设局网站地产渠道12种拓客方式
  • 北京市网站公司网络项目免费的资源网
  • 电子商务网站规划、电子商务网站建设站长工具 忘忧草
  • 凡科建网关键词优化公司哪家好
  • seo排名推广工具seo公司多少钱
  • 做视频网站赚钱怎么在百度上推广自己的公司信息
  • 网站建设凡科厦门网站建设平台