MongodbTemplate的查询操作

Class类

@Document(collection = "class")
public class Class {

    private String classId;
    private String teacher;
    private List<Student> Students;
    public String getClassId() {
        return classId;
    }
    public void setClassId(String classId) {
        this.classId = classId;
    }
    public String getTeacher(){
        return teacher;
    }
    public void setTeacher(String teacher){
        this.teacher = teacher;
    }
    public List<Student> getStudents() {
        return Students;
    }
    public void setStudents(List<Student> Students) {
        this.Students = Students;
    }
    @Override
    public String toString() {
        return "Class [classId=" + classId + ", Students=" + Students + "]";
    }
}

查询满足条件的数据

Query query = Query.query(Criteria.where("classId").is("1"));
List<Class> classs = mongoTemplate.find(query,Class.class,"class");
System.out.println(classs);

查询满足条件的第一条数据

Query query = Query.query(Criteria.where("classId").is("1"));
List<Class> classs = mongoTemplate.findOne(query,Class.class,"class");
System.out.println(classs);

筛选要查询的字段(id字段不查出来)

DBObject dbObject = new BasicDBObject();
dbObject.put("classId", "1");
DBObject fieldObject = new BasicDBObject();
fieldObject.put("_id", false);
Query query = new BasicQuery(dbObject, fieldObject);
List<HashMap> classs = mongoTemplate.find(query,HashMap.class,"class");
System.out.println(classs);

当然也可以不使用HashMap,而使用自己封装的dto,那么只会查询出dto中的字段。
查询结果排序

DBObject dbObject = new BasicDBObject();
dbObject.put("classId", "1");
DBObject fieldObject = new BasicDBObject();
fieldObject.put("_id", false);
Query query = new BasicQuery(dbObject);
query.with(new Sort(Direction.ASC,"classId"));
List<HashMap> classs = mongoTemplate.find(query,HashMap.class,"class");
System.out.println(classs);

多字段排序

DBObject dbObject = new BasicDBObject();
dbObject.put("classId", "1");
DBObject fieldObject = new BasicDBObject();
fieldObject.put("_id", false);
Query query = new BasicQuery(dbObject);
List<Sort.Order> orders = new ArrayList<>();
orders.add(new Sort.Order(Direction.DESC, "classId"));
orders.add(new Sort.Order(Direction.DESC, "teacher"));
query.with(new Sort(orders));
List<HashMap> classs = mongoTemplate.find(query,HashMap.class,"class");
System.out.println(classs);

查询结果分页

int pageNum = 1;
int pageSize = 10;
DBObject dbObject = new BasicDBObject();
dbObject.put("classId", "1");
DBObject fieldObject = new BasicDBObject();
fieldObject.put("_id", false);
Query query = new BasicQuery(dbObject,fieldObject);
List<Sort.Order> orders = new ArrayList<>();
orders.add(new Sort.Order(Direction.ASC, "classId"));
orders.add(new Sort.Order(Direction.DESC, "teacher"));
query.with(new Sort(orders));
query.skip(pageSize*(pageNum-1)).limit(pageSize);
List<HashMap> classs = mongoTemplate.find(query,HashMap.class,"class");
System.out.println(classs);

还有一种通过Morphia框架的做法:

int pageNum = 1;
int pageSize = 10;
DBObject dbObject = new BasicDBObject();
dbObject.put("teacher", "Mr.wang");
DBObject fieldObject = new BasicDBObject();
fieldObject.put("_id", false);
fieldObject.put("_class", false);
DBObject sortDBObject=new BasicDBObject();  
   sortDBObject.put("classId",1);  
DBCursor result = mongoTemplate.getCollection("class")
    .find(dbObject, fieldObject)
    .sort(sortDBObject)
    .skip(pageSize*(pageNum-1)).limit(pageSize);
System.out.println(result.count());
System.out.println(result.toArray());

多条件查询
我们只需要对query对象做出处理即可

Criteria criteria = new Criteria(); criteria.orOperator(Criteria.where("classId").is("2"),Criteria.where("teacher").is("Mr.wang"));
criteria.andOperator(Criteria.where("classId").is("2"));
query.addCriteria(criteria);
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值