崛起于Springboot2.X之集成MongoDb使用mongoTemplate CRUD(27)

1、pom依赖
<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>fastjson</artifactId>
   <version>1.2.7</version>
</dependency>

<dependency>
   <groupId>log4j</groupId>
   <artifactId>log4j</artifactId>
   <version>1.2.16</version>
</dependency>

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

<dependency>
   <groupId>org.projectlombok</groupId>
   <artifactId>lombok</artifactId>
   <version>1.16.16</version>
</dependency>
2、直接测试
@Controller
@RequestMapping(value = "/third")
public class Thrid {
    private  Logger logger = LoggerFactory.getLogger(Thrid.class);

    @Autowired
    MongoTemplate mongoTemplate;

    /*
    * or查询 orOperator
    * 更新集合中的数据的信息 updateMulti(new Query()..,new Update()..,*.class)
    * 对查询结果排序 query.sort().on("",)  query.sort().on("time", Order.DESCENDING);
    * 分页查询 skip(2).limit(3)
    * 指定查询字段 query.fields().include("name").include("sex");
    *
    * */
    @RequestMapping(value = "/get",method = RequestMethod.GET)
    @ResponseBody
    public String get(){
        String account ="cj";
        AdminEntity adminEntity =mongoTemplate.findOne(new Query(Criteria.where("account").is(account).and("nickName").is("chengjian")), AdminEntity.class);
        return adminEntity.toString();
    }

    //写一个查询排序分页带分组
    @RequestMapping(value = "/sortAndGroup",method = RequestMethod.GET)
    @ResponseBody
    public String sortAndGroup(){
        //添加查询条件,手机号在100到90000之间
        Criteria criteria =Criteria.where("mobile").gte("100").lte("90000");
        Aggregation aggregation =Aggregation.newAggregation(
                //project("nickName","account"),
               // match(criteria),
                group("nickName").count().as("num")
                //对字段nickName分组,并计算每一组的总数量,返回结果就是两列,一个是nickName的种类值,另外一个是该值得总数量
        );
        AggregationResults<AdminEntity> aggregate=mongoTemplate.aggregate(aggregation,"adminEntity",AdminEntity.class);
        BasicDBList basicDBList = (BasicDBList) aggregate.getRawResults().get("result");
        List<JSONObject> jsonObjects =new ArrayList<>();
        for (int i =0;i<basicDBList.size();i++){
            BasicDBObject basicDBObject = (BasicDBObject) basicDBList.get(i);
            JSONObject jsonObject = (JSONObject) JSONObject.parse(String.valueOf(basicDBObject));
            jsonObjects.add(jsonObject);
        }
        return jsonObjects.toString();
    }
    //添加
    @RequestMapping(value = "/insert",method = RequestMethod.GET)
    @ResponseBody
    public String add(){
        for (int i=0;i<30;i++) {
            AdminEntity adminEntity = new AdminEntity();
            adminEntity.setId(UUID.randomUUID().toString());
            adminEntity.setNickName("76521");
            adminEntity.setStatus(2);
            adminEntity.setPassword("77523");
            String a = String.valueOf(new Random().nextInt(60) * 36);
            adminEntity.setMobile("" + a);
            mongoTemplate.insert(adminEntity);
        }
        return "OK";
    }
    @RequestMapping(value = "/groupBy",method = RequestMethod.GET)
    @ResponseBody
    public String groupby(){
        //分组条件
        GroupBy groupBy =new GroupBy("nickName")
                .initialDocument("{conut:0}")
                .reduceFunction("function (doc,pre){pre.count +=1 ;}");

        GroupByResults<AdminEntity> results =mongoTemplate.group("adminEntity",groupBy,AdminEntity.class);
        BasicDBList basicDBList = (BasicDBList) results.getRawResults().get("retval");
        List<JSONObject> lists =null;
        JSONObject obj =null;
        for (Object item : basicDBList){
            obj = JSONObject.parseObject(item.toString());
            lists.add(obj);
        }
        return lists.toString();
   }
}

转载于:https://my.oschina.net/mdxlcj/blog/1859621

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值