实体类
@Document("test_user")
public class User implements Serializable {
@Id
private String id;
@Field("name")
private String name;
@Field("age")
private Integer age;
@Field("birthday")
private String birthday;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
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;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
}
插入数据
/**
* //插入数据
* db.test_user.insert({"_id":2,"name":"神里","age":21,"birthday":"2000-07-07"})
* @param user
*/
public void insert(User user){
template.insert(user,"test_user");
}
更新数据
/**
* //修改一条数据
* db.test_user.updateOne({"_id":"2"}, {$set:{"name":"神里"}})
* @param user
*/
public void update(User user){
Query query = new Query();
//查询条件 相当于 mysql where
query.addCriteria(Criteria.where("_id").is(user.getId()));
//更新key-value值
Update update = new Update();
update.set("name",user.getName());
//更新一条记录
mongoTemplate.updateFirst(query,update,User.class,"test_user");
}
删除数据
/**
* //删除一天数据
* db.test_user.remove({"_id":"3"});
* @param user
*/
public void delete(User user){
Query query = new Query();
query.addCriteria(Criteria.where("_id").is(user.getId()));
mongoTemplate.remove(query,"test_user");
}
查询数据
/**
* //查询数据
* db.test_user.find({"_id":"1"})
* @param user
* @return
*/
public List<User> select(User user){
Query query = new Query();
query.addCriteria(Criteria.where("_id").is(user.getId()));
return mongoTemplate.find(query, User.class, "test_user");
}
查询条件
Query query = new Query();
query.addCriteria(Criteria.where("_id").is(user.getId()));
//db.test_user.find({},{"name":1})
//查询出部分字段包含
query.fields().include("name");
//查询部分字段不包含
query.fields().exclude("name");
// 多条件查询
Criteria criteria = new Criteria();
// or条件 name="影" or age=21
//db.test_user.find({$or:[{"name":"影"},{"age":21}]})
criteria.orOperator(Criteria.where("name").is("影"),Criteria.where("age").is(21));
// and条件 name="影" and age=21
// db.test_user.find({$and:[{"name":"影"},{"age":21}]})
criteria.andOperator(Criteria.where("name").is("影"),Criteria.where("age").is(21));
query.addCriteria(criteria);
// db.test_user.find().limit(1).skip(0).sort({"_id":1}) 1升序/-1降序 limit:分页数据大学,skip:当前分页页码
//排序 spring boot最新该类构造器私有不能直接new
Sort sort = Sort.by(Sort.Direction.DESC, "_id");
//分页查询 不过分页类需要自己封装 spring boot最新该类构造器私有不能直接new
Pageable pageable = PageRequest.of(0,3,sort);
query.with(pageable);
//字符串日期范围查询 查询或比较 gte/lte 大于/小于
// db.test_user.find({"birthday":{$gte:"2000-01-01",$lte:"2022-09-09"}})
query.addCriteria(Criteria.where("birthday").gte("2000-01-01").lte("2022-09-09"));
//like之类后续自己看api
分页查询条件
//SQL 查询出_id,fullName,carNo,healthDate 按某一字段降序
db.project.find({},{"_id":1,"healthNo":1,"fullName":1,"cardNo":1,"healthDate":1}).sort({"healthDate":-1}).limit(10)
/**
* 获取体检报告列表
* @param current
* @param pageSize
* @return
*/
public MongoPageResult getlist(Integer current,Integer pageSize,Long tenantId){
Sort sort = new Sort(Sort.Direction.DESC,"healthDate");
Query query = new Query();
query.fields().include("_id"); //包含该字段
query.fields().include("healthNo"); //包含该字段
query.fields().include("fullName"); //包含该字段
query.fields().include("cardNo"); //包含该字段
query.fields().include("healthDate"); //包含该字段
query.with(sort);
query.addCriteria(Criteria.where("tenantId").is(tenantId));
//分页条件
Pageable pageable = new PageRequest(current,pageSize);
query.with(pageable);
// 查询记录总数
long totalCount = template.count(query, "project");
List<Project> project = template.find(query, Project.class, "project");
// 计算总页数
long totalPage = totalCount % pageSize == 0 ? totalCount / pageSize : totalCount / pageSize + 1;
return new MongoPageResult(totalCount,current,pageSize,totalPage,project);
}