新增,以下两种方式可以直接新增
第一种实体的方式,可以嵌套实体
@Data
class Student{
@Id
@JsonProperty
private String id;
private String name;
private String age;
private Classc classc;
}
@Data
class Classc{
private String cName;
private String teacherName;
}
@Test
public void addTest(){
Student student = new Student();
Classc classc = new Classc();
student.setAge("10");
student.setName("ces");
classc.setCName("yuwen");
classc.setTeacherName("老刘");
student.setClassc(classc);
student= mongoTemplate.save(student, MongoConstant.COLLECTION_FORM_DATA);
System.out.println(student.getId());
}
第二种jsonObject的类型
@Test
public void addTestJsonObject(){
JSONObject student = new JSONObject();
JSONObject classc = new JSONObject();
student.put("age","10");
student.put("name","ces");
classc.put("cName","yuwen");
classc.put("teacherName","老刘");
student.put("classc",classc);
student= mongoTemplate.save(student, MongoConstant.COLLECTION_FORM_DATA);
System.out.println(student.getString("_id"));
}
删除,可根据自己的条件进行删除
@Test
public void deleteTest(){
Query query = new Query();
Criteria criteria = new Criteria();
query.addCriteria(criteria.and("_id").is("6295b17c9e9baf344e007414"));
mongoTemplate.remove(query, MongoConstant.COLLECTION_FORM_DATA);
}
修改
第一种使用save的方式修改,一般这种只能修改单个。这种修改的方式是通过id去修改,如果id不存在就新增一个,存在就修改为新传入的数据
@Test
public void updateTest(){
// Query query = new Query();
// Criteria criteria = new Criteria();
// query.addCriteria(criteria.and("_id").is("6295b17c9e9baf344e007414"));
Student student = new Student();
Classc classc = new Classc();
student.setId("6295b43cd4c2b106ea161e39");
student.setAge("100");
student.setName("cesu");
classc.setCName("yuwen");
classc.setTeacherName("老刘");
student.setClassc(classc);
mongoTemplate.save(student, MongoConstant.COLLECTION_FORM_DATA);
//jsonObject类型修改
JSONObject student = new JSONObject();
//这里会特殊点,id设置
student.put("_id",new ObjectId("6295b17c9e9baf344e007414"));
JSONObject classc = new JSONObject();
student.put("age","10");
student.put("name","ces");
classc.put("cName","yuwen");
classc.put("teacherName","老刘");
student.put("classc",classc);
student= mongoTemplate.save(student, MongoConstant.COLLECTION_FORM_DATA);
}
第二种修改根据条件修改
@Test
public void updateByQueryTest(){
Query query = new Query();
Criteria criteria = new Criteria();
query.addCriteria(criteria.and("age").is("10"));
Update update = new Update();
update.set("name","upCes");
//年龄为10的第一个数据
mongoTemplate.updateFirst(query,update, MongoConstant.COLLECTION_FORM_DATA);
//批量更新
//mongoTemplate.updateMulti(query,update, MongoConstant.COLLECTION_FORM_DATA);
}
查询
@Test
public void queryTest(){
//单个条件查询,嵌套的实体查询会报异常。这种实体上面是没有继承JSONObject的情况。如果继承了jsonObject就不会报错异常。
Query query = new Query();
Criteria criteria = new Criteria();
query.addCriteria(criteria.and("_id").is("6295b43cd4c2b106ea161e39"));
JSONObject students = mongoTemplate.findOne(query,JSONObject.class,MongoConstant.COLLECTION_FORM_DATA);
String jsonStr = JSONObject.toJSONString(students);
//这里不能用内部类 所以在其他包下面新建了类
com.cqec.dmplatsystem.Student student = JSONObject.parseObject(jsonStr, com.cqec.dmplatsystem.Student.class);
System.out.println(student.getClassc().getCName());
}
分页查询
@Test
public void queryPageTest() {
Query query = new Query();
//查询年龄为10姓名为zhansan的数据
query.addCriteria(new Criteria("age").is("10"));
query.addCriteria(new Criteria("name").is("zhansan"));
long count = mongoTemplate.count(query, JSONObject.class, MongoConstant.COLLECTION_FORM_DATA);
if (count > 0) {
//第一页 每页5个数据 根据时间time倒序排序
Pageable pageable = PageRequest.
of(1, 5, Sort.by(Sort.Order.desc("time")));
query.with(pageable);
List results = mongoTemplate.find(query, JSONObject.class, MongoConstant.COLLECTION_FORM_DATA);
}
}
查询返回指定的字段
@Test
public void queryIncFieldTest() {
Query query = new Query();
//查询年龄为10姓名为zhansan的数据
query.addCriteria(new Criteria("age").is("10"));
query.addCriteria(new Criteria("name").is("zhansan"));
long count = mongoTemplate.count(query, JSONObject.class, MongoConstant.COLLECTION_FORM_DATA);
if (count > 0) {
//第一页 每页5个数据 根据时间time倒序排序
Pageable pageable = PageRequest.
of(1, 5, Sort.by(Sort.Order.desc("time")));
query.with(pageable);
//返回指定的字段
query.fields().include("_id");
List results = mongoTemplate.find(query, JSONObject.class, MongoConstant.COLLECTION_FORM_DATA);
}
}
模糊查询
@Test
public void queryReFieldTest() {
Query query = new Query();
//模糊匹配名字为shansan的
//全模糊匹配 ^.*数据.*$ 左模糊 ^数据.*$ 右模糊 ^.*数据$ 全匹配 ^数据$
Pattern patternMa = Pattern.compile("^.*" + "zhansan" + ".*$", Pattern.CASE_INSENSITIVE);
query.addCriteria(new Criteria().and("name").regex(patternMa));
long count = mongoTemplate.count(query, JSONObject.class, MongoConstant.COLLECTION_FORM_DATA);
if (count > 0) {
//第一页 每页5个数据 根据时间time倒序排序
Pageable pageable = PageRequest.
of(1, 5, Sort.by(Sort.Order.desc("time")));
query.with(pageable);
//返回指定的字段
query.fields().include("_id");
List results = mongoTemplate.find(query, JSONObject.class, MongoConstant.COLLECTION_FORM_DATA);
}
}



