选择Web快速构建项目
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> <scope>test</scope> </dependency>
public class MongoTest extends MongodbApplicationTests{ private final MongoTemplate mongoTemplate; @Autowired public MongoTest(MongoTemplate mongoTemplate) { this.mongoTemplate = mongoTemplate; } }
//1.创建集合 @Test public void creatCollection(){ boolean product = mongoTemplate.collectionExists("product"); if(!product){ mongoTemplate.createCollection("product"); } }
//2.删除集合 @Test public void deleteCollection(){ mongoTemplate.dropCollection("product"); }
@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;
//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); }
@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); }
//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()); }
@Test public void deleteTest(){ //删除所有文档 mongoTemplate.remove(new Query(), User.class); //删除指定文档 mongoTemplate.remove(Query.query(Criteria.where("name").is("熊猫")), User.class); }