MongoDB 安装
基于Docker安装
docker run --restart=always -d --name mongo -v /opt/mongodb/data:/data/db -p 27017:27017 mongo:4.0.6
客户端工具使用
mongoDB工具链接: 点击下载工具
MongoDB 使用
引用依赖包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
配置文件配置mongodb资料
# MongoDB连接信息
spring.data.mongodb.host = 192.168.23.27
spring.data.mongodb.port = 27017
spring.data.mongodb.database = mall
spring.data.mongodb.auto-index-creation = true
准备对象Person
@Document(collection = "person") // 指定集合名称,就是类似mysql的表,如果不指定就以类名称作为集合名称
@Data
public class Person {
@Id // 文档id, 很重要,类似mysql表的主键
private Long id;
private String name;
private Integer age;
/**
* 创建一个10秒之后文档自动删除的索引 结合 spring.data.mongodb.auto-index-creation = true 一起使用
创建一个10秒之后文档自动删除, 类似 redis ttl
注意:这个字段必须是date类型或者是一个包含date类型值的数组字段,一般我们使用date类型;
*/
@Indexed(expireAfterSeconds=10)
private LocalDateTime createTime;
}
新增文档
@Autowired
private MongoTemplate mongoTemplate;
/**
* 插入文档
*/
@Test
void insert() {
Person person =new Person();
person.setId(20530712L);
person.setName("张三");
person.setAge(26);
mongoTemplate.insert(person);
}
/**
* 自定义集合,插入文档
*/
@Test
public void insertCustomCollection() throws Exception {
Person person =new Person();
person.setId(20530712L);
person.setName("张三");
person.setAge(26);
person.setCreateTime(LocalDateTimeUtil.now());
mongoTemplate.insert(person, "custom_person");
}
/**
* 批量插入文档
*/
@Test
public void insertBatch() throws Exception {
List<Person> personList = new ArrayList<>();
for (int i = 1; i < 5; i++) {
Person person =new Person();
person.setId((long) i);
person.setName("张三"+i);
person.setAge(26);
person.setCreateTime(LocalDateTimeUtil.now());
personList.add(person);
}
//mongoTemplate.insert(personList, "custom_person");
mongoTemplate.insertAll(personList);
}
/**
* 存储文档,如果没有插入,否则更新
* 在存储文档的时候会通过主键 ID 进行判断,如果存在就更新,否则就插入
*/
@Test
public void save() throws Exception {
Person person =new Person();
person.setId(1L);
person.setName("张三33");
person.setAge(26);
person.setCreateTime(LocalDateTimeUtil.now());
mongoTemplate.save(person);
}