Spring Boot MongoDBTemplate 增删改查

MongoDBTemplate

Spring Boot 操纵mongoDB的Java API

pom

   <!-- springboot 整合 mongodb   -->
   <dependency> 
	    <groupId>org.springframework.boot</groupId>
	    <artifactId>spring-boot-starter-data-mongodb</artifactId>
	    <version>2.0.0.RELEASE</version>
   </dependency>

引用

@Autowired
private MongoTemplate mongoTemplate;

插入数据

插入一个集合

List<Student> stuList = new ArrayList<>();
stuList.add(new Student(1,"小明","18888888888"));
mongoTemplate.insert(stuList, "student");

插入一个实体类

Student student = new Student(1,"小明","18888888888");
mongoTemplate.insert(student, "student");

insert第二个参数为集合名称

查询数据

精确匹配
//查询单个数据
	public Student findMongo() {
		Query query = new Query(Criteria.where("phone").is("18888888888"));
		Student findOne = mongoTemplate.findOne(query,Student.class,"student");
		return findOne;
	}
模糊匹配
	public Student findMongo() {
		Pattern pattern = Pattern.compile("^.*8$",Pattern.CASE_INSENSITIVE);
		Query query = new Query(Criteria.where("phone").regex(pattern));
		Student findOne = mongoTemplate.findOne(query,Student.class,"student");
		return findOne;
	}
多条件查询
public List<Student> findList(){
		Criteria c = new Criteria();
		c.and(key).is(value);
		c.and(key).is(value);
		Query query = Query.query(c);
		List<Student> findList = mongoTemplate.find(query, Student.class,"student");
		return findList;
	}
分页
public List<Student> findList(){
		Criteria c = new Criteria();
		c.and(key).is(value);
		c.and(key).is(value);
		Query query = Query.query(c);
		// 设置分页
		query.skip().limit();
		List<Student> findList = mongoTemplate.find(query, Student.class,"student");
		return findList;
	}
排序
//查询单个数据
	public Student findMongo() {
		Query query = new Query(Criteria.where("phone").is("18888888888"));
		query.with(new Sort(Sort.Direction.DESC,"phone"));
		Student findOne = mongoTemplate.findOne(query,Student.class,"student");
		return findOne;
	}
使用count()函数
	public long  findMongo() {
		Query query = new Query(Criteria.where("phone").is("18888888888"));
		return mongoTemplate.count(query,Student.class,"student");
	}

更新

更新文档
//更新
public int update() {
	Query query = new Query(); 
	query.addCriteria(Criteria.where("_id").is(1));  //_id区分引号 "1"和1
	Update update = Update.update("name", "zzzzz");
//	WriteResult upsert = mongoTemplate.updateMulti(query, update, "userList"); //查询到的全部更新
//	WriteResult upsert = mongoTemplate.updateFirst(query, update, "userList"); //查询更新第一条
	WriteResult upsert = mongoTemplate.upsert(query, update, "userList");      //有则更新,没有则新增
	return upsert.getN();       //返回执行的条数
	}
内嵌文档
添加内嵌文档
//添加内嵌文档数据(有则直接加入,没有则进行新增)
	public int update1() {
		Query query = Query.query(Criteria.where("_id").is("11"));
		Student student = new Student(1,"小明","18888888888");
		Update update = new Update();
		update.addToSet("student", student);
		WriteResult upsert = mongoTemplate.upsert(query, update, "student");
		return upsert.getN();
	}

修改内嵌文档
//修改内嵌文档中数据
public int update2() {
	//查询_id为11并且其中userList文档的_id为1的
	Query query = Query.query(Criteria.where("_id").is("11").and("users._id").is(1));
	Update update = Update.update("users.$.name", "zhangsan");
	WriteResult upsert = mongoTemplate.upsert(query, update, "student");
	return upsert.getN();
}

删除内嵌文档数据
//删除内嵌文档中数据
	public int delete() {
	//查询_id为11并且其中userList文档的_id为1的
	Query query = Query.query(Criteria.where("_id").is("11").and("users._id").is(1));
	Update update = new Update();
	update.unset("users.$");
	WriteResult upsert = mongoTemplate.updateFirst(query, update, "student");
	return upsert.getN();
}

删除文档

//查询单个数据
	public Student findMongo() {
		Query query = new Query(Criteria.where("phone").is("18888888888"));
		mongoTemplate.remove(query,Student.class,"student");
	}
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值