目录
一、安装MongoDB
1、拉取镜像
docker pull mongo
2、创建挂载目录
mkdir -p /home/mongodb/data
3、启动镜像
docker run -it --name mongo -p 27017:27017 -v /home/mongodb/data:/data/db -d mongo
4、 进入容器
docker exec -it mongo mongo
5、创建用户
默认是不需要用户密码就可以访问。如果需要使用账号密码访问,就需要创建用户。
db.createUser({user: "admin", pwd: "admin", roles: [{role: "root", db: "admin" }]});
role | 作用 |
Read | 允许用户读取指定数据库 |
readWrite | 允许用户读写指定数据库 |
dbAdmin | 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile |
userAdmin | 允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户 |
clusterAdmin | 只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限 |
readAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的读权限 |
readWriteAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的读写权限 |
userAdminAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的userAdmin权限 |
dbAdminAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限 |
root | 只在admin数据库中可用。超级账号,超级权限 |
二、SpringBoot集成MongoDB
1、添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
2、添加配置
spring:
data:
mongodb:
host: 127.0.0.1
database: 数据库名称
port: 27017
3、创建实体类
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document;
import java.time.LocalDateTime;
@Data
@Document(value = "goods")
public class Goods {
@Id
private Long id;
@Indexed
private Long merchantId;
private String name;
private String specifications;
private Integer price;
private Integer saleState;
private Integer deleted;
private LocalDateTime createTime;
private LocalDateTime updateTime;
}
4、创建Repository
import org.springframework.data.mongodb.repository.MongoRepository;
public interface GoodsRepository extends MongoRepository<Goods, Long> {
}
5、创建Service
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service;
@Service
public class GoodsService {
private final GoodsRepository goodsRepository;
private final MongoTemplate mongoTemplate;
public GoodsService(GoodsRepository goodsRepository, MongoTemplate mongoTemplate) {
this.goodsRepository = goodsRepository;
this.mongoTemplate = mongoTemplate;
}
public Page<Goods> page(int page, int size) {
return goodsRepository.findAll(PageRequest.of(page, size));
}
public void save(Goods goods) {
goodsRepository.save(goods);
}
public void updatePrice(Long id, Integer price) {
Query query = Query.query(Criteria.where("_id").is(id));
Update update = new Update();
update.set("price", price);
mongoTemplate.updateFirst(query, update, Goods.class);
}
}
继承MongoRepository提供了增删查改、分页查询等实现方法,高级语法的应用需通过注入MongoTemplate方式实现