MongoTemplate进行增删改查

注入
@Autowired
private MongoTemplate mongoTemplate;
插入数据(可以是一个对象,或者是一个对象集合)
User user = new User(12,"1","黄小飞","18888888888");
mongoTemplate.insert(user, "user");
List<User> userList = new ArrayList<>();
userList.add(new User(11,"1","白小飞","18888888888"));
userList.add(new User(9,"1","白敬亭","13333333333"));
userList.add(new User(5,"1","林宥嘉","14444444444"));
userList.add(new User(6,"1","彭于晏","15555555555"));
userList.add(new User(7,"1","周杰伦","16666666666"));
mongoTemplate.insert(userList, "user");

当存入的第一个数据类型是User,名字是user的时候,第二个存入数据就必须是User类型的数据。

查询数据

查询单个数据和多个数据,模糊查询:

//查询单个数据
public User findMongo() {
	Pattern pattern = Pattern.compile("^.*8$",Pattern.CASE_INSENSITIVE);
	Query query = new Query(Criteria.where("phone").regex(pattern));
	User findOne = mongoTemplate.findOne(query,User.class,"user");
	return findOne;
}

//查询多个数据
public List<User> findListMongo() {
	//模糊查询以 ^开始 以$结束 .*相当于Mysql中的%
	Pattern pattern = Pattern.compile("^1.*$",Pattern.CASE_INSENSITIVE);
	Query query = new Query(Criteria.where("phone").regex(pattern));
	//Query query = new Query(Criteria.where("status").is("1"));
	//query.with(new Sort(Direction.DESC,"phone"));  //按手机号码倒序
	 List<User> findList = mongoTemplate.find(query,User.class,"user");
	return findList;
}

多个条件查询:

//多个条件查询(格式1)
public List<User> findList(){
	Query query = new Query();
	query.addCriteria(Criteria.where("name").is("秦岚"));
	query.addCriteria(Criteria.where("phone").is("12222222222"));
	List<User> findList = mongoTemplate.find(query, SysUser.class,"user");
	return findList;
}
//多个条件查询(格式2)
public List<User> findList2(){
	Criteria criteria = new Criteria();
	criteria.and("name").is("秦岚");
	criteria.and("phone").is("12222222222");
	Query query = new Query(criteria);
	List<User> findList = mongoTemplate.find(query, SysUser.class,"user");
	return findList;
}
//一个模糊关键字匹配多个字段
public List<User> findList3(){
		
	Pattern pattern = Pattern.compile("^.*222$",Pattern.CASE_INSENSITIVE);
	Criteria  criteria = new Criteria();
	//phone以222结尾的 或者 name以222结尾的  
	criteria.orOperator(Criteria.where("phone").regex(pattern),
	Criteria.where("name").regex(pattern));
	//同时满足 phone以222结尾的,和name以222结尾的
    criteria.andOperator(Criteria.where("phone").regex(pattern),
	Criteria.where("name").regex(pattern));
		
	Query query = new Query(criteria);
	List<SysUser> find = mongoTemplate.find(query, SysUser.class,"user");
	return find;
}
更新
//更新
public int update() {
	Query query = new Query(); 
	//_id区分引号 "1"和1
	query.addCriteria(Criteria.where("_id").is(1));
	Update update = Update.update("name", "zzzzz");
	//查询到的全部更新
	//WriteResult upsert = mongoTemplate.updateMulti(query, update, "user");
	//查询更新第一条
	//WriteResult upsert = mongoTemplate.updateFirst(query, update, "user");
	//有则更新,没有则新增
	WriteResult upsert = mongoTemplate.upsert(query, update, "user");      
	//返回执行的条数
	return upsert.getN();
}
//添加内嵌文档数据(有则直接加入,没有则进行新增)
public int update1() {
	Query query = Query.query(Criteria.where("_id").is("11"));
	SysUser user = new SysUser(1,"1","lisi","19999998745");
	Update update = new Update();
	update.addToSet("users", user);
	WriteResult upsert = mongoTemplate.upsert(query, update, "user");
	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, "user");
	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, "user");
	return upsert.getN();
}

————————————————
版权声明:本文为CSDN博主「oh_EJiao」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sinat_35821285/article/details/83511203

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MongoTemplate是Spring Data MongoDB提供的一个MongoDB操作模板,它封装了对MongoDB的常用操作方法。以下是MongoTemplate增删改查语法示例: 1. 插入文档(增加数据): 使用`insert()`方法插入单个文档: ```java mongoTemplate.insert(objectToInsert, collectionName); ``` 使用`insertAll()`方法插入多个文档: ```java mongoTemplate.insertAll(listOfObjectsToInsert); ``` 2. 查询文档(查询数据): 使用`find()`方法查询文档: ```java mongoTemplate.find(query, Object.class, collectionName); ``` 查询所有文档: ```java mongoTemplate.findAll(Object.class, collectionName); ``` 3. 更新文档(修改数据): 使用`updateFirst()`方法更新单个文档: ```java mongoTemplate.updateFirst(query, update, Object.class, collectionName); ``` 使用`updateMulti()`方法更新多个文档: ```java mongoTemplate.updateMulti(query, update, Object.class, collectionName); ``` 4. 删除文档(删除数据): 使用`remove()`方法删除单个文档: ```java mongoTemplate.remove(query, Object.class, collectionName); ``` 使用`removeMulti()`方法删除多个文档: ```java mongoTemplate.remove(query, Object.class, collectionName); ``` 其中,`mongoTemplate`是你创建的MongoTemplate对象,`query`是查询条件,`update`是更新操作的内容,`Object.class`表示要查询或更新的文档类型,`collectionName`是集合名称。你可以根据自己的需求使用不同的查询条件和更新操作来完成相应的操作。具体的语法和选项可以参考Spring Data MongoDB的官方文档。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值