MongoTemplate增删改查(聚合查询)使用 我就是我 2022-12-28 01:56 405阅读 0赞 查询条件 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); }
还没有评论,来说两句吧...