springboot中jpa使用mongodb模糊查詢

最近在項目中使用了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", "[email protected]");
//		//只修改第一個
//	 // 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;
  }

暫時就分享這些了,後續有使用問題會繼續貼在這裏。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章