MongoTemplete关于子文档操作
- 文档内容
{
“_id” : ObjectId(“60710d6f66f0544834aa5aa3”),
“key” : “135800968611762176”,
“users” : [
{
“level” : “{“levelInt”:20000,“levelStr”:“INFO”}”,
“time” : NumberLong(1618021743047)
},
{
“level” : “{“levelInt”:20000,“levelStr”:“INFO”}”,
“time” : NumberLong(1618021743078)
},
{
“level” : “{“levelInt”:20000,“levelStr”:“INFO”}”,
“time” : NumberLong(1618021743079)
}]
}
- 子文档时间排序并skip,limit操作
//开启临时文件排序
AggregationOptions aggregationOptions = AggregationOptions.builder().allowDiskUse(true).build();
AggregationOperation match = Aggregation.match(criteria);
AggregationOperation unwind = Aggregation.unwind("users");
AggregationOperation project = getLogInfoFields();
AggregationOperation sort = Aggregation.sort(Sort.Direction.ASC,"users.time");
Aggregation aggregation = Aggregation.newAggregation(match, unwind, sort,Aggregation.skip(skipCount),limit(10),project).withOptions(aggregationOptions);
AggregationResults<TaskLog> groupResult = mongoTemplate.aggregate(aggregation, TaskLog.class, TaskLog.class);
List<TaskLog> mappedResults = groupResult.getMappedResults();