MongoDB依赖spring-data-mongdb的一些查询

记录一下本次用到的MongoTemplate  Criteria Query 的写法

MongoTemplate  Criteria Query这个三个分别来自以下的包

org.springframework.data.mongodb.core.MongoTemplate;
org.springframework.data.mongodb.core.query.Criteria;
org.springframework.data.mongodb.core.query.Query;

1.distinct

简单的distinct

//str 是要聚合的字段名
List list = mongoTemplate.getCollection("message").distinct(str);
带条件的distinct
//key是相当于where中 的字段名,value则是值,str则是要聚合的字段名
DBObject queryObject = Query.query(Criteria.where(key).is(value)).getQueryObject();
List list = mongoTemplate.getCollection("message").distinct(str,queryObject);
2.count
Long num=mongoTemplate.count(new Query(criteria),Message.class);

3.正则表达式
criterias.and("msgBodyMap."+key[i]).regex(".*?\\" +value[i]+ ".*");

4.查询范围时间
String str_start= (String) map.get("receiveTime_begin")
String str_end= (String) map.get("receiveTime_end");
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date end=sdf.parse(str_end);
 Date  start=sdf.parse(str_start);
 criterias.and("receiveTime").gte(start).lte(end);
注意:查日期范围的,不能写两个criteria,否则会报错,必须写到一个criteria中才行
5.排序,分页
Query query = new Query(criteria);
query.skip(pageNo);
query.limit(pageSize);
query.with(new Sort(new Sort.Order(Sort.Direction.DESC, "receiveTime")));//按某个字段进行排序
list=mongoTemplate.find(query,Message.class);





你可能感兴趣的:(mongodb,MongoTemplate,Criteria,Query,mongodb)