如何使用汇总按_id分组

时间:2018-11-28 00:38:14

标签: java mongodb spring-data

具有以下代码:

Aggregation aggregation = newAggregation(Foo.class,
                                         limit(10),
                                         group("_id")).withOptions(new AggregationOptions.Builder().allowDiskUse(true).build());

AggregationResults aggregate = mongoOps.aggregate(aggregation,
                                                  "Foo",
                                                  ObjectId.class);
List<ObjectId> idsToDelete = new ArrayList<>(aggregate.getMappedResults());

我希望它能照常工作。实际上,它会抛出:

org.springframework.data.mapping.model.MappingException: No mapping metadata found for org.bson.types.ObjectId

我在这里做错了什么? 为了使它起作用,我发现的唯一方法是用以下类替换聚合中的ObjectId:

public class ObjectIdHolder {
    private ObjectId _id;

    private ObjectId getId() {
        return _id;
    }
}

但是我宁愿不使用它而使它工作,因为它比其他任何东西都更加嘈杂。

我在另一个集合栏上尝试了完全相同的代码,其中_id不是ObjectId,而是自定义对象BarId,它的工作原理就像一个超级按钮。

0 个答案:

没有答案