MongodbTemlate是MongoOperations的实现类 首先我们可以注入一个MongoOperations
假如我们有以下数据 :
id | name | age | class |
---|---|---|---|
1 | 李雷 | 12 | 1901 |
2 | 乔治 | 13 | 1901 |
3 | 丽丽 | 12 | 1902 |
操作一 :查询1901班的所有数据
BasicDBObject queryObject = new BasicDBObject();
DBObject fieldObject = new BasicDBObject();
//设置查询结果返回name和id
fieldObject.put("name", true);
fieldObject.put("id", true);
//查询条件
Query query = new BasicQuery(queryObject, fieldObject);
query .addCriteria(Criteria.where("class")
.is(1091));//置入查询条件
//执行查询
List<Map> all=mongoOps.findAll(query,Map.class)
操作二:查询1901班年龄大于11岁小于13岁的人
//其实就是修改一下查询条件
Criteria.where("class")
.is(1901)
.and(age)
.gte(11)
.lte(12));
操作三:查询每班年级最大的人按id大小排序,此处需要用到group 和sort,这里我们使用Aggregation聚合类
//Aggregation 可以使用多个AggregationOperation的参数
Aggregation aggregation1 = Aggregation.newAggregation( Aggregation.group("class" ).max("age" ).as("age" ),Aggregation.sort(new Sort(new Sort.Order(Sort.Direction.DESC, "id"))));
//执行查询 返回结果 参数1位上方的查询条件 参数2是集合名字相当于数据库的表名 参数是返回字段的类
AggregationResults<BasicDBObject> outputTypeCount1 =
mongoOps.aggregate(aggregation1, COLLCTION_NAME, BasicDBObject.class);