MongoDB是一个NoSQL的非关系型数据库 ,支持海量数据存储,高性能的读写
一.使用docker安装mongo
1.安装
拉取mongo镜像(4.4以上版本都比较稳定)
docker pull mongo:4.4
创建mongo数据持久化目录 (看自己爱好,放哪里都行)
mkdir -p /usr/local/docker/mongodb/data
运行容器
docker run -itd --name mongo -v /usr/local/docker/mongodb/data:/data/db -p 27017:27017 mongo:4.4 --auth
-v: 将宿主机的/usr/local/docker/mongodb/data映射到容器的/data/db目录,将数据持久化到宿主机,以防止删除容器后,容器内的数据丢失
–auth:需要密码才能访问容器服务
2.创建用户
登录mongo容器,并进入到【admin】数据库
docker exec -it mongo admin
创建一个用户,mongo 默认没有用户
db.createUser({ user:'root',pwd:'cgm@123',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},'readWriteAnyDatabase']});
【user:‘root’ 】:设置用户名为root
【pwd:‘cgm@123’】:设置密码为cgm@123
【role:‘userAdminAnyDatabase’】:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
【db: ‘admin’】:可操作的数据库
【‘readWriteAnyDatabase’】:赋予用户读写权限
3.navicat连接测试
二.MongoDB集成Spring-Boot
1.引入依赖
dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
<version>2.7.13</version>
</dependency>
2.添加配置 (还有一种配置需要注意特殊符号)
spring:
data:
mongodb:
host: 111.229.245.29
port: 27017
username: root
password: cgm@123
authenticationDatabase: admin
database: test
3.编写实体类
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;
import java.util.Date;
@Data
@AllArgsConstructor
@NoArgsConstructor
//指定实体类和数据库文档的映射关系 默认实体类名
@Document(collection="logs")
public class User {
private String id;
// 方法名称
private String method;
// 请求方式
@Field("request_method")
private String requestMethod;
//操作人员
@Field("logs_name")
private String logsName;
//请求URL
@Field("logs_url")
private String logsUrl;
// 主机地址
@Field("logs_ip")
private String logsIp;
// 请求参数
@Field("logs_param")
private String logsParam;
// 返回参数
@Field("json_result")
private String jsonResult;
// 错误消息
@Field("error_msg")
private String errorMsg;
// 操作时间
//@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Field("create_time")
private Date createTime;
// 消耗时间
@Field("cost_time")
private Long costTime;
}
1.@Document(collection="logs") :指定实体类和数据库文档的映射关系 默认实体类名 数据库如果没有该文档,会自动创建
2. @Field("request_method"): //指定属性名和数据库域的映射关系 默认属性名
4.两种-CRUD连接方式