springboot中jpa使用mongodb模糊查询

2 篇文章 0 订阅
1 篇文章 0 订阅

最近在项目中使用了mogodb,第一次用,先在菜鸟教程上熟悉了基本的crud操作了,这些可以用

mongoTemplate这个模板给的对应方法如下:
	//	@Test
//	public void insert() {
//		try {
	//parm1 插入的实体类对象 parm2 集合名字
//	 mongoService.insertOne(new User("dxy","123"), "dxy");
//	} catch ( Exception e){
//		e.printStackTrace();
//		System.out.println("添加失败");
//	}
//	}

//	@Test
//	public void delete() {
//		try {
//		//注意is中参数的数据类型必须和数据库一致
//		Query query = Query.query(Criteria.where("age").is(123061).and("dataStatus").is(0));
//		long delteNum = this.mongoTemplate.remove(query, collectionName).getDeletedCount();
//		System.out.println("删除的记录数目"+ delteNum);
//	} catch ( Exception e){
//		e.printStackTrace();
//		System.out.println("删除失败");
//	}
//	}
//  @Test
//	public void update(){
//		//更新条件
//		Query query = Query.query(Criteria.where("userId").is("ccc").and("age").is("888"));
//		Update update = new Update();
//		//set 的值
//		update.set("age", "777");
//		update.set("name", "wrr");
//		update.set("email", "8888@qq.com");
//		//只修改第一个
//	 // long modifyNum = 	this.mongoTemplate.updateFirst(query, update, collectionName).getMatchedCount();
//		//修改所有
//	  long modifyNum = 	this.mongoTemplate.updateMulti(query, update, collectionName).getMatchedCount();
//		System.out.println("修改的记录数目:" + modifyNum);
//	}
//
   @Test
	public void query() {
		//query all 不带条件的
		 Query query = new Query();
	 //query on conditional
	//Query query = Query.query(Criteria.where("orign").is("form"));
		List<ConsultRequestDto> lists = this.mongoTemplate.find(query, ConsultRequestDto.class, "midelsystem");
		System.out.println("====size======="+ lists.size());
		for (int i = 0 ; i < lists.size(); i++){
			System.out.println(lists.get(i).getContent());
		}
	}

那么如何匹配在Navicat中执行如下的MongoDB的sql如下:

 

统计数据库中某段时间某种类型,某个值不为空,某个组里边前3的按照_id降序排列的结果:

在serviceimpl中对应的java代码如下:

 AggregationResults<MyEnty> countNumTop3(Date starttime, Date endtime, String groupstr ) {
    Criteria criteria = Criteria.where("content").ne("").ne(null);
    criteria.andOperator(
        Criteria.where("rqsttime").gte(starttime),
        Criteria.where("rqsttime").lte(endtime));     //时间条件
    Sort sort = new Sort(Direction.DESC, "_id"); //排序 按照_id减序
    Aggregation agg = Aggregation.newAggregation(
        Aggregation.match(criteria), //加入match条件
        Aggregation.group(groupstr).count().as("num"), //分组字段
        Aggregation.sort(sort),
        Aggregation.limit(3) // 限制前几条的
      );
    //parm1 集合名字 parm2 实体类
    AggregationResults<MyEnty> outputType = mongoTemplate.aggregate(agg,
        ColNameConstants.BASIC_COLLECTION_NAME, MyEnty.class);
    return  outputType;
  }

暂时就分享这些了,后续有使用问题会继续贴在这里。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

焱童鞋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值