J'ai besoin de connaître la durée moyenne de toutes les itérations effectuées. Je l'entité de l'entité que je vous expliquer ci-dessous:Obtenir une moyenne simple de la collection avec Spring Data MongoDB
@Document(collection = IterationEntity.COLLECTION_NAME)
public class IterationEntity {
public final static String COLLECTION_NAME = "iterations";
@Id
private ObjectId id;
@Field("start_date")
private Date startDate;
@Field("finish_date")
private Date finishDate;
@Field("duration")
private Long duration;
@Field("total_tasks")
private Integer totalTasks = 0;
@Field("total_failed_tasks")
private Integer totalFailedTasks = 0;
@Field("total_comments")
private Integer totalComments = 0;
@Field("tasks")
@DBRef
@CascadeSave
private Set<TaskEntity> tasks = new HashSet<>();
}
J'ai mis en place une méthode personnalisée référentiel pour effectuer cette opération mais je reçois une erreur quand je reçois le résultat.
@Override
public Long getAvgDuration() {
GroupOperation avgOperation = Aggregation.group()
.sum("duration")
.as("total_duration")
.avg("total_duration")
.as("avg_duration");
Aggregation aggregation = newAggregation(IterationEntity.class, avgOperation);
return mongoTemplate.aggregate(aggregation, IterationEntity.COLLECTION_NAME, Long.class).getUniqueMappedResult();
}
Lorsque la méthode est exécutée, je reçois cette exception:
org.springframework.data.mapping.model.MappingException: No mapping metadata found for java.lang.Long
Merci à l'avance.
Dans requête d'agrégation ci-dessus, vous retournez à la fois somme et moyenne, alors que vous avez donné Long comme un type de classe pour fonctionner mongoTemplate.aggregate. Je pense que c'est le problème – Afridi