SpringBoot操作mongodb
作者:互联网
1.快速构建一个项目
选择Web快速构建项目
2.导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
<scope>test</scope>
</dependency>
3.编写测试类(勾选了web,里面也会导入test的依赖)
public class MongoTest extends MongodbApplicationTests{
private final MongoTemplate mongoTemplate;
@Autowired
public MongoTest(MongoTemplate mongoTemplate) {
this.mongoTemplate = mongoTemplate;
}
}
4.创建集合
//1.创建集合
@Test
public void creatCollection(){
boolean product = mongoTemplate.collectionExists("product");
if(!product){
mongoTemplate.createCollection("product");
}
}
5.删除集合
//2.删除集合
@Test
public void deleteCollection(){
mongoTemplate.dropCollection("product");
}
6.实体类上的注解
@Document("users")
public class User {
@Id
private Integer id;
@Field("userName")
private String name;
@Field("userSex")
private String sex;
@Field("age")
private String age;
@Transient
private String weight;
7.save和insert方法
//3.操作文档的新增方法
@Test
public void saveAndInsert(){
//1.操作实体时,如果自己定义了id,新增时必须给id赋值,不然会报错,没有建立id的实体,那么会自动生成id
//2.save方法,如果id存在,就是更新id对应这条数据
User user = new User(4,"张思美", "女", 18, 110);
mongoTemplate.save(user);
//insert方法插入的id已存在时,会报错
mongoTemplate.insert(user);
//insert可以操作这个集合
User panda = new User(3,"熊猫", "动物", 18, 1000);
List<User> users = Arrays.asList(user, panda);
mongoTemplate.insert(users,User.class);
}
8.查询
@Test
public void find(){
//查询所有findAll方法
List<User> all = mongoTemplate.findAll(User.class);
//通过id查询
User byId = mongoTemplate.findById(1, User.class);
//添加条件查询
List<User> users = mongoTemplate.find(new Query(), User.class);
Query query = new Query();
List<User> users1 = mongoTemplate.find(query, User.class);
//查询条件的使用
List<User> users2 = mongoTemplate.find(Query.query(Criteria.where("userName").is("张思美")), User.class);
//and的使用,注意查询的条件每个字段只有一个,不能重复
List<User> users3 = mongoTemplate.find(Query.query(Criteria.where("userName").is("熊猫").and("userSex").is("动物")), User.class);
//or的使用
Criteria criteria = new Criteria();
criteria.orOperator(Criteria.where("userName").is("张思美"),Criteria.where("userName").is("熊猫"));
List<User> user4 = mongoTemplate.find(Query.query(criteria), User.class);
//or和and连用
List<User> users4 = mongoTemplate.find(Query.query(Criteria.where("userName").is("张思美").orOperator(Criteria.where("age").is(18))), User.class);
//排序
Query query1 = new Query();
query1.with(Sort.by(Sort.Order.desc("age")));
List<User> users5 = mongoTemplate.find(query1, User.class);
//分页查询
Query query2 = new Query();
query1.with(Sort.by(Sort.Order.desc("age"))).skip(0).limit(1);
List<User> users6 = mongoTemplate.find(query1, User.class);
//12.去重 distinct
//参数1:查询条件参数2:去重字段参数3:操作集合参数4∶返回类型
List<String> stringList = mongoTemplate.findDistinct(new Query(),"name",User.class,String.class);
//count
long count = mongoTemplate.count(Query.query(Criteria.where("name").is("张思美")), User.class);
System.out.println(count);
}
9.修改
//2.更新操作
@Test
public void updateCollection(){
//更新第一条
Update update = new Update();
update.set("name","刘渝");
mongoTemplate.updateFirst(Query.query(Criteria.where("name").is("张思美")),update,User.class);
//更新全部
mongoTemplate.updateMulti(Query.query(Criteria.where("name").is("张思美")),update,User.class);
//查询条件没有的数据就直接插入
UpdateResult upsert = mongoTemplate.upsert(Query.query(Criteria.where("name").is("张思美")), update, User.class);
//匹配的条数
System.out.println(upsert.getMatchedCount());
//修改的条数
System.out.println(upsert.getModifiedCount());
//插入的id
System.out.println(upsert.getUpsertedId());
}
10.删除
@Test
public void deleteTest(){
//删除所有文档
mongoTemplate.remove(new Query(), User.class);
//删除指定文档
mongoTemplate.remove(Query.query(Criteria.where("name").is("熊猫")), User.class);
}
标签:SpringBoot,mongodb,Criteria,mongoTemplate,query,User,Query,操作,class 来源: https://blog.csdn.net/qq_45721042/article/details/123610256