轉載自:https://blog.csdn.net/sinat_35821285/article/details/83511203#commentBoxspring
1.首先pom.xmlsql
<!-- springboot 整合 mongodb --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> <version>2.0.0.RELEASE</version> </dependency>
引入mongodb
@Autowired private MongoTemplate mongoTemplate;
插入數據(能夠是一個對象,或者是一個對象集合)springboot
List<SysUser> userList = new ArrayList<>(); userList.add(new SysUser(11,"1","白小飛","18888888888")); userList.add(new SysUser(9,"1","白敬亭","13333333333")); userList.add(new SysUser(5,"1","林宥嘉","14444444444")); userList.add(new SysUser(6,"1","彭于晏","15555555555")); userList.add(new SysUser(7,"1","周杰倫","16666666666")); mongoTemplate.insert(userList, "userList");
SysUser sysUser = new SysUser(12,"1","黃小飛","18888888888"); mongoTemplate.insert(sysUser, "userList");
當存入的第一個數據類型是SysUser,名字是userList的時候,第二個存入數據就必須是SysUser類型的數據。spring-boot
查詢數據spa
查詢單個數據和多個數據,模糊查詢.net
//查詢單個數據 public SysUser findMongo() { Pattern pattern = Pattern.compile("^.*8$",Pattern.CASE_INSENSITIVE); Query query = new Query(Criteria.where("phone").regex(pattern)); SysUser findOne = mongoTemplate.findOne(query,SysUser.class,"userList"); return findOne; }
//查詢多個數據 public List<SysUser> 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<SysUser> findList = mongoTemplate.find(query,SysUser.class,"userList"); return findList; }
//多個條件查詢(格式2) public List<SysUser> findList2(){ Criteria criteria = new Criteria(); criteria.and("name").is("秦嵐"); criteria.and("phone").is("12222222222"); Query query = new Query(criteria); List<SysUser> findList = mongoTemplate.find(query, SysUser.class,"userList"); return findList; }
//一個模糊關鍵字匹配多個字段 public List<SysUser> 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,"userList"); return find; }
更新。code
//更新 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")); SysUser user = new SysUser(1,"1","lisi","19999998745"); Update update = new Update(); update.addToSet("users", user); WriteResult upsert = mongoTemplate.upsert(query, update, "userList"); 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, "userList"); 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, "userList"); return upsert.getN(); }
查詢多個數據刪除以後是這樣的:xml