提交 1d1d89c6 编写于 作者: 小雨青年's avatar 小雨青年

MongoDB 增删改查

上级 739a460d
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 {
......@@ -12,12 +19,110 @@ public class CatTest {
@Autowired
private MongoTemplate mongoTemplate;
private final Class<Cat> entityClass = Cat.class;
@Test
public void createTest(){
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<Cat> cats = mongoTemplate.findAll(entityClass);
System.out.println(cats);
//根据条件查询
Criteria criteria = (new Criteria(entityClass.getDeclaredField("likeCount").getName())).is(cats.get(0).getLikeCount());
List<Cat> 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");
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册