MongoDB是一个跨平台的,由C++ 语言编写,面向文档的NoSQL数据库,具备高性能、高可用和易扩展等特性,本教程从Java语言角度描述MongoDB的使用方式。
提示:本教程基于springboot的spring-boot-starter-data-mongodb包操作mongodb.
前置教程
导入依赖包
导入maven包
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-data-mongodb</artifactid>
</dependency>
MongoDB连接配置
application.properties
# Mongodb服务地址
spring.data.mongodb.host=localhost
# 端口
spring.data.mongodb.port=27017
# 账号
spring.data.mongodb.username=root
# 密码
spring.data.mongodb.password=123456
# 数据库
spring.data.mongodb.database=admin
提示:yaml格式配置类似。
引用MongoTemplate
@Autowired
private MongoTemplate mongoTemplate;
通过MongoTemplate可以直接对MongoDB进行各种CRUD操作。
导入MongoDB常用类
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
定义一个实体类
先定义一个Person类,后面针对这个类型的数据进行CRUD操作。
package org.spring.mongodb.example;
public class Person {
private String id;
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
创建文档
mongoTemplate.insert(new Person("Joe", 34));
查询文档
// 根据文档ID(id=60bc7dcbfd939959b5096ed0)查询一条数据,并将结果映射到person对象中
Person person = mongoTemplate.findById("60bc7dcbfd939959b5096ed0", Person.class);
// 根据条件(name = Joe)查询一条记录.
Person person2 = mongoTemplate.findOne(new Query(Criteria.where("name").is("Joe")), Person.class);
提示:MongoTemplate支持更多丰富的查询表达式,详情请参考后续章节。
更新文档
// 根据查询条件(name=Joe),更新一条数据,更新内容为age=35
mongoTemplate.updateFirst(query(where("name").is("Joe")), update("age", 35), Person.class);
删除文档
Person person = mongoTemplate.findById("60bc7dcbfd939959b5096ed0", Person.class);
mongoTemplate.remove(person);
提示:MongoTemplate更新操作请参考后续章节。