mongodb 学习笔记-高级查询

本文介绍了如何在Spring框架中与MongoDB进行高级查询操作,包括利用groupby进行分组查询,使用regex实现模糊搜索,以及运用order by进行排序。通过这些技巧,可以更高效地管理和检索数据。
摘要由CSDN通过智能技术生成

spring 整合mongodb 高级查询



分组查询 groupby ;

<NspInterLog> GroupByResults<NspInterLog> org.springframework.data.mongodb.core.MongoTemplate.group(Criteria arg0, String arg1, GroupBy arg2, Class<NspInterLog> arg3)

代码层应用

/**
	 * 分组查询 groupby 
	 * @param resultCode 
	 * @param resultInfo
	 * @author xlr
	 * */
	@Override
	public  GroupByResults<NspInterLog>  GroupByResultcode(String resultCode,String resultInfo,Date startDate) {
		 GroupBy groupBy = GroupBy.key(resultCode,resultInfo).initialDocument("{count:0}")  
	        .reduceFunction("function(doc, prev){prev.count+=1}"); 
		 return mongoTemplate.group(Criteria.where("logTime").lt(new Date()).gte(startDate),getCollectionName(), groupBy, getEntityClass());
	}
count查询

 long org.springframework.data.mongodb.core.MongoTemplate.count(Query query, Class<?> entityClass, String collectionName)


代码层应用

	/**
	 * count查询
	 * @param endTime
	 * @param startTime
	 * @author xlr
	 * 
	 * */

	@Override
	public long getCountPV(Date startData, Date endTime) {
		Query query = new Query();
		query.addCriteria(Criteria.where("logTime").lt(endTime).gte(startData));
	    Long count = mongoTemplate.count(query, NspInterLog.class,collectionName);
		return count;
		
	}

模糊查询 regex  排序 order by

Criteria org.springframework.data.mongodb.core.query.Criteria.regex(String re)


org.springframework.data.domain.Sort.Order.Order(Direction direction, String property)

代码层应用

	/**
	 * 模糊查询 resultInfo
	 * @param like 
	 * @author xlr
	 * */
	@Override
	public Page<NspInterLog> findRegex(String like) {
		SpringDataPageable pageable = new SpringDataPageable();
	    Query query = new Query();
	    List<Order> orders = new ArrayList<Order>();  //排序
	    orders.add(new Order(Direction.DESC, "logTime"));//order by 
	    query.addCriteria(Criteria.where("resultInfo").regex(like));
	    Sort sort = new Sort(orders);
	    pageable.setSort(sort);
	    return getPages(query, pageable);
	}


分页查询


	/**
	 * 分页数据
	 * @param query
	 * @param pageable
	 * */
	public Page<T> getPages(Query query , SpringDataPageable pageable) {
		 Long count = mongoTemplate.count(query, getEntityClass(),collectionName);
		    // 查询
		    List<T> list = mongoTemplate.find(query.with(pageable), getEntityClass(),collectionName);
		    // 将集合与分页结果封装
		    Page<T> pagelist = new PageImpl<T>(list, pageable, count);
			return pagelist; 
	}




待续。。。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值