创建springBoot项目,添加maven依赖
org.springframework.boot spring-boot-starter-data-mongodb
application.properties文件配置:
spring.data.mongodb.uri=mongodb://127.0.0.1:27017/lgy创建实体类
现在我们数据库有student_info这个表,如下图:
按照这个结构去创建实体类
package com.example.mongo.entity;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;
@Document("student_info")
public class Student {
@Id
private String id;
private Integer sex;
@Field("username")
private String name;
private Integer age;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Integer getSex() {
return sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
其中@Document(“student_info”)注解指定数据库中的表,@Field(“username”)可以映射其中的列
添加操作
public void add() {
Student student = new Student();
student.setName("alis");
student.setAge(25);
student.setSex(1);
mongoTemplate.insert(student);
}
public void add_two() {
Map map = new HashMap<>();
map.put("_id", "10086");
map.put("username", "bob");
map.put("age", 13);
map.put("sex", 0);
mongoTemplate.insert(map, "student_info");
}
查询
首先是比较简单的查询
//查询全部 Listall = mongoTemplate.findAll(Student.class); //主键查询 Student student = mongoTemplate.findById("your id", Student.class);
条件查询、排序、分页
//条件判断都放在Criteria里
Criteria criteria = new Criteria();
// in 操作
criteria.and("sex").in(Arrays.asList(0, 1));
// age 大于等于0 小于等于30
criteria.and("age").gte(0).lte(30);
//id 等于 10086
criteria.and("_id").is("10086");
//模糊查询
String key = "匹配字段";
Pattern pattern = Pattern.compile(String.format("%s%s%s", "^.*", key, ".*$"), Pattern.CASE_INSENSITIVE);
criteria.and("username").regex(pattern);
Query query = new Query(criteria);
//排序 descending就是降序 不加默认升序
query.with(Sort.by("age").descending());
query.with(PageRequest.of(0, 10));
//第二种分页方式
//query.skip((page - 1) * size).limit(size);
List list = mongoTemplate.find(query, Student.class);
修改操作
//首先要根据id查询到要修改的数据
String id = "10086";
Query query = new Query(Criteria.where("_id").is(id));
//要修改的字段
Update update = Update.update("sex", 1)
.set("username", "bob111")
.set("age", 12);
mongoTemplate.upsert(query,update,"student_info");
删除
String id = "10086";
Query query = new Query(Criteria.where("_id").is(id));
mongoTemplate.remove(query,"student_info");
高级查询 聚合操作
Criteria criteria = new Criteria();
criteria.and("age").gt(20);
Aggregation aggregation = Aggregation.newAggregation(
//条件过滤
Aggregation.match(criteria),
Aggregation.group("sex")
.sum("age")
.as("total"),
//排序
Aggregation.sort(Sort.by("total").descending()),
//查询的条数 可以理解为分页 limit 0,10
Aggregation.skip(0),
Aggregation.limit(10)
);
AggregationResults


