MongoTemplate增删改查(聚合查询)使用

查询条件
Query query = new Query();
query.with(Sort.by(Sort.Order.desc("date")));//排序
query.addCriteria(Criteria.where("name").is(name));//等于
query.addCriteria(Criteria.where("age").is(age));//等于
query.addCriteria(Criteria.where("score").ne("0.0"));//score不是0.0(not equal的意思)
query.addCriteria(Criteria.where("xh").nin(xhList));//不在这个集合中
query.addCriteria(Criteria.where("xh").in(xhList));//在这个集合中
query.addCriteria(Criteria.where("date").gte(startTime).lte(endTime));//时间段查询
query.addCriteria(Criteria.where("date").gte(startTime));//大于等于
query.addCriteria(Criteria.where("date").lt(endTime));//小于
按多个字段排序
List<Sort.Order> orders = new ArrayList<Sort.Order>();
orders.add(new Sort.Order(Sort.Direction.DESC,"date"));
orders.add(new Sort.Order(Sort.Direction.DESC,"age"));
query.with(Sort.by(orders));


/**
 * 插入
 */
public void insertTest(Test test) {
    mongoTemplate.insert(test);
}
/**
 * 批量插入
 */
 public void insertAllTest(List<Test> testList) {
    mongoTemplate.insertAll(testList);
 }
/**
* 根据条件删除数据
* @return
*/ 
public void removeTest(Query query) { mongoTemplate.findAllAndRemove(query, Test.class); }
/**
* 根据条件修改或保存数据
* @return
*/
public void updateTest(Map<String,String> value){
   Query query = new Query();
   query.addCriteria(Criteria.where("name").is(value.get("name")));
   query.addCriteria(Criteria.where("age").is(value.get("age")));
   String strDateFormat = "yyyy-MM-dd HH:mm:ss";
   SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat);
   Update update = new Update().inc("allTime",1) 
                   .set("date",sdf.format(new Date()));
   //数据存在就更新,不存在就插入数据
   mongoTemplate.upsert(query, update, Test.class); }
/**
 * 根据条件查询单条数据
 * @return
 */
public Test getTestByConditions(Query query) {
    return  mongoTemplate.findOne(query, Test.class);
}
/**
 * 根据条件查询数据集合
 * @return
 */
public List<Test> getTestsByConditions(Query query) {
    return mongoTemplate.find(query, Test.class);
}
/**
 * 根据条件查询总条数
 * @param query
 * @return
 */
public long count(Query query){
    return mongoTemplate.count(query, Test.class);
}

/**
 * 根据序号分组(时间)求和再排序
 * @param xh
 * @return
 */
public Map<String,Object> getResult(String xh) {
    Map<String,Object> map = new HashMap<>();
    Aggregation agg = Aggregation.newAggregation(
            Aggregation.group("xh").sum("time").as("allTime"),
            Aggregation.sort(Sort.Direction.DESC, "allTime")
    );
    AggregationResults<Test> results = mongoTemplate.aggregate(agg, Test.class, Test.class);
    List<Test> list = results.getMappedResults();
    for (int i=0; i<list.size();i++) {
       if (list.get(i).getId().equals(xh)){
           map.put("result",i+1);
           map.put("allTime",list.get(i).getAllTime());
           break;
       }
    }
    return map;
}
/**
 * 根据条件查询分页
 * @param json
 * @return
 */
public ResponsePage page(@RequestBody String json){
        JSONObject jsonObject = JSON.parseObject(json);
        int pageNum = Integer.parseInt(jsonObject.getString("pageNum"));
        int pageSize = Integer.parseInt(jsonObject.getString("pageSize"));
        
        Query query = new Query();
        query.with(Sort.by(Sort.Order.desc("date")));//排序
        long totalSize = mongoTemplate.count(query, ErrorLog.class);
        List<ErrorLog> list= mongoTemplate.find(query.skip((pageNum-        
        1)*pageSize).limit(pageSize),ErrorLog.class);

        ResponsePage responsePage = new ResponsePage();
        responsePage.setData(list);
        responsePage.setCount((long)list.size());
        responsePage.setTotalCount(totalSize);

        return mongoTemplate.count(query, Test.class);
}
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值