Имея следующий код:
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;
}
}
Но я бы предпочел, чтобы он работал без него, поскольку он больше шума, чем все остальное.
Я попробовал точно такой же код на другой коллекции Bar, где _id - это не ObjectId, а пользовательский объект BarId, и он работает как шарм.