关闭

MongodbTemplate的查询操作

标签: mongodb
192人阅读 评论(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);
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Spring MongodbTemplate 查找10公里范围内的目标(以车辆为例)

Mongodb官网参考地址:https://docs.mongodb.com/manual/core/geospatial-indexes/#calculation-of-geohash-values...
  • chenli_66
  • chenli_66
  • 2016-09-27 14:33
  • 1061

mongotemplate mongodb的各种操作 模糊查询 精确查询 等等

本意是想查查mongo数据库的int类型的like怎么查,但是好像没 解决这个问题。 一. 常用查询: 1. 查询一条数据:(多用于保存时判断db中是否已有当前数据,这里 is...
  • LXB15959168136
  • LXB15959168136
  • 2016-08-19 18:38
  • 20299

对于springframework的mongoTemplate扩展自定义的分享

之前对于spring的mongoTemplate真的是有点又爱又恨,由于它对mongodb的驱动做了一层封装,使得在开发的时候方便了许多,但是它的语法和mongo的原生js有很大不同,有时候在mong...
  • u010677293
  • u010677293
  • 2017-02-09 22:55
  • 1265

Springmvc 应用Mongodb分页实现

spring mongodb mongoTemplate 分页
  • chunqiuwei
  • chunqiuwei
  • 2013-12-07 15:56
  • 15106

Spring Data MongoDB 三:基本文档查询(Query、BasicQuery)(一)

一.简介      Spring Data  MongoDB提供了org.springframework.data.mongodb.core.MongoTemplate对MongoDB的CRUD...
  • beijing20110905
  • beijing20110905
  • 2016-07-13 16:36
  • 2131

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

基础实体类 @Document(collection="person") class Person{         String id;     ...
  • liyanlei5858
  • liyanlei5858
  • 2015-10-23 14:04
  • 1763

mongoDB应用篇——固定集合和GridFS文件

本篇介绍mongoDB应用中常用的两个对象,固定集合和GridFS文件 一、Capped Collection固定集合 1、介绍 固定集合顾名思义,有着固定大小的collection集合,除了大小固定...
  • Daybreak1209
  • Daybreak1209
  • 2016-01-11 11:04
  • 616

MongoDb的普通查询操作

1、            查询的基本语法 db.表明.find({},{}); 第一个{}是条件的bson数据,如果有多个条件,以”,”分割如: >db.produc...
  • pd10340927
  • pd10340927
  • 2016-05-04 11:27
  • 912

数据库常用基本操作

启动数据库 sudo service mysql start 停止数据库 sudo service mysql stop 重启数据库 sudo service mysql restart ...
  • milankunde
  • milankunde
  • 2018-01-05 23:57
  • 29

关于XML的读写操作以及查询操作

我们在做一些项目的时候,往往会用XML来配置内部成员,部署他们之间的关系,使得程序运行起来不至于太混乱,今天就稍微讲解一下关于XML的一些用法。
  • hasion
  • hasion
  • 2015-02-09 10:42
  • 882
    个人资料
    • 访问:3621次
    • 积分:327
    • 等级:
    • 排名:千里之外
    • 原创:30篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条