具有以下代码:
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,它的工作原理就像一个超级按钮。