最近在项目中使用了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;
  }暂时就分享这些了,后续有使用问题会继续贴在这里。









