赞
踩
1.简单查询
public <T>List<T> findQuery(Criteria criteria, Class<T> c ,String tableName) {
Query query = Query.query(criteria);
return mongoTemplate.find(query, c, tableName);
}
2.聚合查询
public List<Map> aggregateQuery(Criteria criteria, String groupField, String tableName) {
AggregationOptions aggregationOptions = AggregationOptions.builder().allowDiskUse(true).build();
Aggregation aggregation = Aggregation.newAggregation(
Aggregation.match(criteria),
Aggregation.group(groupField).count().as("count")
).withOptions(aggregationOptions);
return mongoTemplate.aggregate(aggregation, tableName, Map.class).getMappedResults();
}
3.复杂聚合查询
public List<Map> complexAggregateQuery(Criteria criteria, String primaryField, String additionalField, String tableName) {
AggregationOptions aggregationOptions = AggregationOptions.builder().allowDiskUse(true).build();
Aggregation aggregation = Aggregation.newAggregation(
Aggregation.match(criteria),
Aggregation.group(primaryField, additionalField),
Aggregation.group(primaryField).count().as("count")
).withOptions(aggregationOptions);
return mongoTemplate.aggregate(aggregation, tableName, Map.class).getMappedResults();
}
4.聚合排序limit条数
public List<Map> aggregateSortQuery(Criteria criteria, String groupField, String tableName, long limit) {
AggregationOptions aggregationOptions = AggregationOptions.builder().allowDiskUse(true).build();
Aggregation aggregation = Aggregation.newAggregation(
Aggregation.match(criteria),
Aggregation.group(groupField).count().as("count"),
Aggregation.sort(new Sort(new Sort.Order(Sort.Direction.DESC,"count"))),
Aggregation.limit(limit)
).withOptions(aggregationOptions);
return mongoTemplate.aggregate(aggregation, tableName, Map.class).getMappedResults();
}
4.聚合排序返回对象
public<T>List<T> aggregateGroupQueryT(Criteria criteria, String groupField, String tableName,Class<T> c) {
AggregationOptions aggregationOptions = AggregationOptions.builder().allowDiskUse(true).build();
Aggregation aggregation = Aggregation.newAggregation(
Aggregation.match(criteria),
Aggregation.group(groupField)
).withOptions(aggregationOptions);
return mongoTemplate.aggregate(aggregation, tableName, c).getMappedResults();
}
5.聚合排序加limit条数返回对象
public<T>List<T> aggregateSortQueryT(Criteria criteria, String groupField, String tableName, long limit, Class<T> c) {
AggregationOptions aggregationOptions = AggregationOptions.builder().allowDiskUse(true).build();
Aggregation aggregation = Aggregation.newAggregation(
Aggregation.match(criteria),
Aggregation.group(groupField).count().as("count"),
Aggregation.sort(new Sort(new Sort.Order(Sort.Direction.DESC,"count"))),
Aggregation.limit(limit)
).withOptions(aggregationOptions);
return mongoTemplate.aggregate(aggregation, tableName, c).getMappedResults();
}
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。