Java Mongo:如何获得每个docuemnt的最大值

时间:2017-01-22 14:05:59

标签: java mongodb aggregation-framework

我有一个包含复杂文档的集合,每个文档都有用户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()方法只是查找将数据序列化到我的类模型。

谢谢!

1 个答案:

答案 0 :(得分:0)

好吧,我刚发现了这个问题,我必须在group()部分指定所有字段:

group("userId", "type", "header", "body", "scopes", "accountId").last("timestamp").as("timestamp")