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

浙江大成建设集团网站seo基础知识培训

浙江大成建设集团网站,seo基础知识培训,免费域名注册微信下载,阜宁有做网站的吗MongoDB 介绍概述 基础概念 MongoDB 是非关系型数据库,也就是nosql,存储json数据格式会非常灵活,要比数据库mysql/MariaDB更好,同时也能为mysql/MariaDB分摊一部分的流量压力。 对于经常读写的数据他会存入内存,如此…

 MongoDB 介绍概述

基础概念

MongoDB 是非关系型数据库,也就是nosql,存储json数据格式会非常灵活,要比数据库mysql/MariaDB更好,同时也能为mysql/MariaDB分摊一部分的流量压力。

对于经常读写的数据他会存入内存,如此一来对于热数据的并发性能是相当高的,从而提升整体的系统效率。

另外呢,对于非事务的数据完全可以保存到MongoDB中,这些数据往往也是非核心数据。

一般来说,我们可以把一些非重要数据但是读写却很大的数据存储在MongoDB,比如我们自己的物流危化运输的车辆运行轨迹,GPS坐标,以及大气监测的一些动态指标等数据。又或者说咱们实战中的友情链接,友情链接在首页,这数据本身不重要,但是在首页里会经常被读到,并发读很大,所以放mongoDB中没毛病。

此外,mongodb提供的gridfs提供小文件存储,可以自己把控接口读取的权限,可以去限制,这一点也是有优势的,比如存储一些身份证信息啊,人脸信息啊都是可以的。


以下是MongoDB和数据库以及ElasticSearch(es没接触过的,待后续整合es后可以回过头来对比看看)的术语对比:

  • MongoDB可以创建多个数据库(同mysql)
  • 一个数据库可以创建多个collection(同mysql创建多表)
  • 一个集合可以包含很多文档数据(同mysql一张表包含很多行记录)

我们可以通过如下代码片段来更好的理解MongoDB的数据对比,假设这张表中总记录有3条:

UserList: [{userId: "1001",username: "lee",age: 18{userId: "1002",username: "jay",age: 20,sex: "boy"  },{userId: "1003",username: "jolin",age: 19,sex: "girl" }
]

如上述代码中:

  • UserList是一个collection,在mysql中可以当做是一张表
  • UserList中的每个{}都是一个json对象,他们称之为document文档,在mysql中称之为行记录
  • userId、username、age、sex 这些都是field 域,在MySQL中称之为column列字段
  • field 域可有可无,这样是非常灵活的,例如第一个dicument文档,中sex域是没有的

 Docker 安装配置MongoDB

安装

docker pull mongo:6.0.3

运行 mongodb:

docker run --name mongo \
-p 28028:27017 \
--restart always \
-d mongo:6.0.3 \
--auth
  • -p 27017:27017 :端口映射
  • --auth :开启密码访问

至此安装成功~!

配置admin账号

docker exec -it mongo mongo admin

报错:

原因:MongoDB 的5.x以上的版本使用mongo来执行mongodb命令已经不支持了,需要改用mongosh来替代mongo

docker exec -it mongo mongosh admin

创建admin账号

db.createUser({ user:'admin',pwd:'imooc',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});

测试成功

db.auth('admin', 'admin')

 MongoDB - HR职位信息举报

举报功能对于这个系统来讲,可有可无,举报量可能比较大,mysql数据库存储的瓶颈可能很快就会达到,解决数据库瓶颈会把一部分数据迁移到其他存储介质。

采用MongoDB原因
1.可有可无的数据
2.非常庞大的增加数据
MongoDB其他应用:日志的存储

整合MongoDB

pom父工程:

<dependency><groupId>org.mongodb</groupId><artifactId>mongodb-driver</artifactId><version>3.12.11</version>
</dependency>

pojo中引入:

 整合springboot,使用springboot提供的

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

为什么放在pojo微服务里?

不仅仅在我们的web里使用MongoDB,还会使用MongoDB相应的对象,有映射关系,以及ElasticSearch也有对应映射类,使用映射类,就会使用MongoDB的依赖坐标

配置文件(web-业务微服务模块)

uri: mongodb://username:password@localhost:27017/database
你需要替换usernamepasswordlocalhostdatabase为你的MongoDB服务器的实际用户名、密码、地址和数据库名

其他服务排除依赖

因为pojo服务引入了MongoDB依赖,AB服务引入了pojo依赖,A服务使用MongoDB,B服务不使用,不使用的则要在自动装配里排除

启动类操作如下: 

代码实现

controller:举报信息的MO对象:

@Ids:生成相应主键 

service:

数据层调用:

使用Springboot内部集成的JPA,String,为id的类型

结果:

调用成功后新增了一张表 

MongoDB - 限制重复举报

 controller

service

impl

mapper

根据接口名字findByReportUserIdAndJobId实现条件过滤操作

验证时候要保证数据只有一条,因为返回的类型为对象

MongoDB - 查询举报记录

页面效果

vue-vue视图界面

vue-data()对象

vue-api

controller

因为MongoDB数据库存储时间是带有时间时分秒

BO

service

impl

    @Autowiredprivate MongoTemplate mongoTemplate;@Overridepublic PagedGridResult pagedReportRecordList(SearchReportJobBO reportJobBO,Integer page,Integer pageSize) {String jobName = reportJobBO.getJobName();String companyName = reportJobBO.getCompanyName();String reportUserName = reportJobBO.getReportUserName();Integer dealStatus = reportJobBO.getDealStatus();LocalDateTime beginDate = reportJobBO.getBeginDateTime();LocalDateTime endDate = reportJobBO.getEndDateTime();// 1. 创建查询对象Query query = new Query();// 2. 创建条件对象//Criteria criteria = new Criteria();// 3. 设置查询条件参数if (StringUtils.isNotBlank(jobName)) {query = addLikeByValue(query, "job_name", jobName);}if (StringUtils.isNotBlank(companyName)) {query = addLikeByValue(query, "company_name", companyName);}if (StringUtils.isNotBlank(reportUserName)) {query = addLikeByValue(query, "report_user_name", reportUserName);}if (dealStatus != null) {query.addCriteria(Criteria.where("deal_status").is(dealStatus));}if (beginDate != null && endDate == null) {query.addCriteria(Criteria.where("created_time").gte(beginDate));} else if (beginDate == null && endDate != null) {query.addCriteria(Criteria.where("created_time").lte(endDate));} else if (beginDate != null && endDate != null) {query.addCriteria(Criteria.where("created_time").gte(beginDate).lte(endDate));}// 4. 查询记录总数,必须在分页前查询,否则总数不对long counts = mongoTemplate.count(query, ReportMO.class);// 5. 设置分页,Direction:方向Pageable pageable = PageRequest.of(page,pageSize,Sort.Direction.DESC,"created_time");query.with(pageable);// 6. 执行查询List<ReportMO> list = mongoTemplate.find(query, ReportMO.class);// 7. 封装分页grid信息数据PagedGridResult gridResult = new PagedGridResult();gridResult.setRows(list);gridResult.setPage(page);gridResult.setRecords(counts);return gridResult;}private Query addLikeByValue(Query query, String key, String value) {// 拼接 正则表达式和查询参数Pattern pattern = Pattern.compile("^.*" + value + ".*$");// 指定要查询的属性query.addCriteria(Criteria.where(key).regex(pattern));return query;}

MongoDB是文档类型数据库,全部是json数据,当在Navicat里复制一条数据时,全部变成String和数字类型,之前字段为DateTime类型或其他类型会失效,修改类型进行测试 

MongoDB - 违规处理HR职位

controller

service

impl

         

http://www.zhtcad.com/news/208.html

相关文章:

  • 网站动态logo怎么做北京seo网站推广
  • 珠宝网站制作的理念百度平台商家我的订单查询
  • 网站优化图片链接怎么做郑州众志seo
  • 怎么建公司网站教程seo怎么优化简述
  • 荣耀官方网站营销推广运营
  • 企业官网开发排行榜西安seo主管
  • 网站开发和广告制作域名网站
  • 网站制作风格类型济南网站建设哪家好
  • 什么内容能提高网站流量aso平台
  • 申请网站就是做网站吗seo建站公司推荐
  • 想建立什么网站吗沈阳高端关键词优化
  • 比较好的网站建设出售外链
  • 文字域名可以做网站上海网站快速优化排名
  • 浦项建设中国有限公司网站百度seo多少钱一个月
  • 安徽国贸网站建设网站登录入口
  • 郑州市哪里有网站建设地推app推广赚佣金
  • 网络广告营销的定义常州网站优化
  • 丰台深圳网站建设公司国内免费推广产品的网站
  • 可以做很多个网站然后哭推广内容营销策略
  • 青海省建设工程在哪个网站发布广告电话
  • 怎么推广网站厦门网站推广优化哪家好
  • 网站没有织梦后台网络市场营销策划书
  • 做卡盟开端网站要多少钱百度上海分公司
  • 邢路桥建设总公司网站网络推广外包公司哪家好
  • 奥美广告公司排名定西seo排名
  • 做外贸有哪些好的网站有哪些百度关键词优化有效果吗
  • h5网站不利于优化吗2022真实新闻作文400字
  • 微商城网站开发视频怎么去做推广
  • app软件大全下载免费seo公司
  • 上百度推广 免费做网站信息流优化师招聘