我有一个包含复杂文档的集合,每个文档都有用户ID。每个userId都有时间戳,所以我想为组织中的所有用户返回文档,每个用户都有最新的时间戳。
这是我尝试过的,除了时间戳和时间之外,它有点工作。 userId字段已映射到结果中 - 未传输所有其他数据:
Criteria criteria = Criteria.where("organization").is("someOrg");
Aggregation agg = newAggregation(
match(criteria),
group("userId").last("timestamp").as("timestamp")
);
AggregationResults<UserPerformanceAlert> groupResults = mongoTemplate.aggregate(agg, collectionName, UserPerformanceAlert.class);
我尝试了项目,但它一直给我说“java.lang.IllegalArgumentException:ExposedFields不能为空!”
注意:完整文档包含我需要检索的复杂内部对象。 normal find()方法只是查找将数据序列化到我的类模型。
谢谢!
答案 0 :(得分:0)
好吧,我刚发现了这个问题,我必须在group()部分指定所有字段:
group("userId", "type", "header", "body", "scopes", "accountId").last("timestamp").as("timestamp")