MongodbTemplate的查询操作

标签: mongodb
346人阅读 评论(0) 收藏 举报
分类:

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);
查看评论

SpringBoot中MongoDB注解概念及使用

spring-data-mongodb主要有以下注解@Id主键,不可重复,自带索引,可以在定义的列名上标注,需要自己生成并维护不重复的约束。如果自己不设置@Id主键,mongo会自动生成一个唯一主键,...
  • tianyaleixiaowu
  • tianyaleixiaowu
  • 2017-06-21 15:03:20
  • 5411

spring-data-mongodb 注解详解

spring-data-mongodb 常用的注解
  • MitKey
  • MitKey
  • 2016-12-31 22:19:25
  • 6236

使用Spring Data来操作MongoDB

http://www.open-open.com/lib/view/open1342877356974.html MongoDB 是一个可扩展的、高性能的、开源的NoSQL数据库,跟传统的数据库不一样...
  • bluejoe2000
  • bluejoe2000
  • 2014-12-26 08:43:20
  • 11607

spring web项目mongoTemplate配置

最近在写一个hive相关的自动化管理框架,想把hql文件、udf文件、查询记录以及运行日志等保存起来,使用mongo作为存储仓库,为了简单,使用spring-data-mongodb作为orm框架. ...
  • xiaotongzone
  • xiaotongzone
  • 2017-03-06 17:45:47
  • 2295

简化MongoAPI第二部分--MongoTemplate

简化MongoAPI第二部分--MongoTemplate
  • high2011
  • high2011
  • 2016-03-08 21:04:45
  • 9224

【整理】nongodb基础认识

NoSQL,指的是非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以...
  • f6991
  • f6991
  • 2014-02-24 17:17:15
  • 492

mongoTemplate.getCollection方法返回值问题

今天参考网上MongoDB的例子(https://www.cnblogs.com/wenbronk/p/6385935.html)写了个demo,发现MongoTemplate的getCollecti...
  • hpc_2015
  • hpc_2015
  • 2017-12-22 13:42:00
  • 399

MongoTemplate使用Cursor处理大数量的数据

对于数据量巨大的情况下,使用mongoTemplate.find()方法返回一个列表,如果不分页的话恐怕比较麻烦。mongoTemplate提供了另外一种方法,使用游标逐个获取数据,同时可以指定只获取...
  • ClementAD
  • ClementAD
  • 2017-02-15 16:09:28
  • 2149

spring data mongodb之mongodbTemplate查询总结

常用的列表查询(筛选条件,查询字段,排序及分页),相当于关系型数据库的:select fields from tableName where coditions order by field skip...
  • mazhen1991
  • mazhen1991
  • 2017-11-03 14:58:33
  • 730

mongodb和spring集成中MongoTemplate的总结是使用方法

mongodb和spring集成中MongoTemplate的总结是使用方法
  • ruishenh
  • ruishenh
  • 2013-10-17 19:39:49
  • 55888
    个人资料
    持之以恒
    等级:
    访问量: 1万+
    积分: 535
    排名: 9万+
    文章存档