项目总结52: Linux安装mongodb和Springboot集成mongodb
Mongodb简介
官网介绍:
MongoDB is a general purpose, document-based, distributed database built for modern application developers and for the cloud era. No database makes you more productive.
MongoDB是一个通用的、基于文档的分布式数据库,它为现代应用程序开发人员和云时代而构建的。无数据库能让你更有效率。
特点:
MongoDB是一个面向文档的数据库,它并不是关系型数据库,直接存取BSON,这意味着MongoDB更加灵活,因为可以在文档中直接插入数组之类的复杂数据类型,并且文档的key和value不是固定的数据类型和大小,所以开发者在使用MongoDB时无须预定义关系型数据库中的”表”等数据库对象,设计数据库将变得非常方便,可以大大地提升开发进度。MongoDB不支持事务操作,所以需要用到事务的应用建议不用MongoDB,另外MongoDB目前不支持join操作,需要复杂查询的应用也不建议使用MongoDB
Linux安装mongodb
参考博客:https://blog.csdn.net/E_Eric12138/article/details/89606950
- 第一步:去官网下载mongodb安装包,我选择的是规格如下,可以直接下载并传到Linux服务器,也可以使用指令直接在Linux上在线下载;
下载指令 wget --no-check-certificate https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.2.tgz
- 第二步: 解压安装包
#解压RGZ文件值当前文件夹 tar -zxvf mongodb-linux-x86_64-rhel70-4.2.2.tgz #将解压后的文件移动到/usr/local/mongodb目录下 mv mongodb-linux-x86_64-rhel70-4.2.2 /usr/local/mongodb
- 第三步:创建配置文件
先准备配置需要的文件
#进入/usr/local/mongodb/目录下 cd /usr/local/mongodb/; #创建data目录 mkdir data; #创建logs目录,并在logs目录下新建mongodb.log文件 mkdir logs; cd logs; touch mongodb.log; #回到上级目录,创建etc目录,并在logs目录下新建mongodb.conf文件 cd ../; mkdir etc; cd etc; touch mongodb.conf
再在mongodb.conf中加入如下配置
#数据库路径 dbpath=/usr/local/mongodb/data #日志输出文件路径 logpath=/usr/local/mongodb/logs/mongodb.log #错误日志采用追加模式 logappend=true #启用日志文件,默认启用 journal=true #这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false quiet=true #端口号 默认为27017 port=27017 #允许远程访问 bind_ip=0.0.0.0 #开启子进程 fork=true #开启认证,必选先添加用户 #auth=true
- 第四步:启动mongodb
启动mongodb服务
#启动日志
./mongod --config /usr/local/mongodb/etc/mongodb.conf
打开mongodb客户端,添加root超级用户
#打开mongodb客户端 [root@VM_0_4_centos bin]# ./mongo #使用默认admin数据库 > use admin #对admin数据库创建root账号,密码也是root > db.createUser({user:"root",pwd:"root",roles:[{role:"root",db:"admin"}]})
关闭mongodb服务,并重新启动,否则root账号无法生效
#mongodb客户端状态下,关闭服务 > db.shutdownServer() #重新启动 [root@VM_0_4_centos bin]# ./mongod --config /usr/local/mongodb/etc/mongodb.conf
Springboot集成mongodb
- 第一步:POM文件中引入jar包
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency>
- 第二步:设计保存到mongodb的数据格式实体类
package com.hs.web.entity.mongodb; import com.hs.api.commom.bizservice.thirdparty.express100.LastResultBean; import io.swagger.annotations.ApiModel; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.index.Indexed; import org.springframework.data.mongodb.core.mapping.Document; import java.sql.Timestamp; import java.util.Date; /* * *@Description: *@Author:TYJ *@Date: create in 2020/1/13 15:04 */ @Document //标明由mongo来维护该表 @ApiModel("mongodb 快递100返回数据") public class Express100NotifyVO { @Id //自增主键 private String id; @Indexed //索引 private Long orderId; private String orderCode; private String logisticsNum; private String jsonData; private Date dataTime; ......省略getter和setter }
- 第三步:设计service层,实现数据的保存和获取
import com.hs.web.entity.mongodb.Express100NotifyVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Component; import java.util.List; @Component public class MongodbBizService { @Autowired private MongoTemplate mongoTemplate;//MongoTemplate类,和RedisTemplate类似,对mongodb数据库的XRUD操作进行封装 //1-将快递100的数据保存到mongodb public void saveExpress100Data(Express100NotifyVO data){ mongoTemplate.save(data);//保存数据 } //2-读取快递100数据 public List<Express100NotifyVO> listExpress100Data(Long orderId){ Query query = new Query();//实例化一个查询条件 query.addCriteria(Criteria.where("orderId").is(orderId));//封装查询条件-根据orderId查询数据 List<Express100NotifyVO> dataList = mongoTemplate.find(query, Express100NotifyVO.class);//mongoTemplate.find查询mongodb数据据 return dataList; } }
- 第四步:在application.properties文件中进行配置
#mongodb://username:password@ip:port/database spring.data.mongodb.uri=mongodb://xg:xg1234@120.26.XX.XX:27017/xg
- 第五步:写controller,正常调用service层方法;
本人遇到的坑:
1-本地测试完功能后,将mongodb用到的jar上传到Linux,没有把bson-3.4.3.jar上传到服务器,导致启动的时候一直无法加载decoder方法