package com.example.springbootwithmongodb.entry; import com.mongodb.client.result.DeleteResult; import com.mongodb.client.result.UpdateResult; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Update; import java.util.List; @SpringBootTest public class CatTest { @Autowired private MongoTemplate mongoTemplate; private final Class entityClass = Cat.class; @Test public void createTest() { Cat cat = new Cat(); cat.setName("糖果"); cat.setAge(3); cat.setLikeCount(100); mongoTemplate.insert(cat); } @Test public void deleteTest() throws NoSuchFieldException { String id = "620a27c3db5ca321f4cc5754"; Criteria criteria = (new Criteria(entityClass.getDeclaredField("id").getName())).is(id); //根据条件删除 Cat cat = mongoTemplate.findAndRemove(new Query(criteria), entityClass); System.out.println(cat); //直接删除 Cat cat2 = mongoTemplate.findById("620a27c3db5ca321f4cc5754", entityClass); assert cat2 != null; DeleteResult result = mongoTemplate.remove(cat2); System.out.println(result); //findAllAndRemove 和 findAndRemove 的区别在于,前者删除全部匹配的数据,后者只删除一个 } @Test public void findTest() throws NoSuchFieldException { //查询全部 List cats = mongoTemplate.findAll(entityClass); System.out.println(cats); //根据条件查询 Criteria criteria = (new Criteria(entityClass.getDeclaredField("likeCount").getName())).is(cats.get(0).getLikeCount()); List cats2 = mongoTemplate.find(new Query(criteria), entityClass); System.out.println(cats2); //根据ID查询 Cat cat = mongoTemplate.findById(cats.get(1).getId(), entityClass); System.out.println(cat); //查询单条记录 Criteria criteria2 = (new Criteria(entityClass.getDeclaredField("name").getName())).is(cats.get(0).getName()); Cat cat2 = mongoTemplate.findOne(new Query(criteria2), entityClass); System.out.println(cat2); } @Test public void updateTest() throws NoSuchFieldException { String id = "620b1b46d6e42202392f5653"; Criteria criteria = (new Criteria(entityClass.getDeclaredField("id").getName())).is(id); Update update = new Update(); update.set(entityClass.getDeclaredField("name").getName(), "炸酱233"); update.inc("likeCount"); //单条更新 UpdateResult updateResult = mongoTemplate.updateFirst(new Query(criteria), update, entityClass); System.out.println(updateResult); Criteria criteria2 = (new Criteria(entityClass.getDeclaredField("age").getName())).is(3); Update update2 = new Update(); update2.set(entityClass.getDeclaredField("name").getName(), "炸酱"); update2.inc("age"); //批量更新 UpdateResult updateResult2 = mongoTemplate.updateMulti(new Query(criteria2), update2, entityClass); System.out.println(updateResult2); } @Test public void countTest() throws NoSuchFieldException { Criteria criteria = (new Criteria(entityClass.getDeclaredField("age").getName())).gte(3); //计数 long count = mongoTemplate.count(new Query(criteria), entityClass); System.out.println(count); } @Test public void otherTest(){ //获取集合名称 String collectionName = mongoTemplate.getCollectionName(entityClass); System.out.println(collectionName); //判断集合是不是存在 false boolean check = mongoTemplate.collectionExists("dog"); System.out.println(check); //判断集合是不是存在 true boolean checkCat = mongoTemplate.collectionExists("cat"); System.out.println(checkCat); //创建集合 mongoTemplate.createCollection("bug2"); //删除集合 mongoTemplate.dropCollection("bug2"); } }