查询条件
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);
}
MongoTemplate增删改查(聚合查询)使用
最新推荐文章于 2024-05-21 11:31:21 发布