Regroupement
Après les critères généraux, configurez la clé de groupe et l'accumulateur, et étendez avec un accumulateur natif du pilote ou un mappage personnalisé.
Groupe par défaut
java
Mono<Map<String, GroupResult>> grouped = dsl
.executeEntity(Order.class, MongoTemplateName.FRONT)
.fields(pair("status", "DONE"))
.end()
.findAll()
.group(String.class, GroupResult.class)
.by("userId")
.count()
.sum("amount", "totalAmount")
.execute();Accumulateur
• count() / countAs(alias)
• sum(field, alias) / avg(field, alias)
• min(field, alias) / max(field, alias)
• addToSet(field, alias) / push(field, alias)
• Accumulateur natif du pilote : accumulator(BsonField)
Mapping des résultats de groupe
java
.group(String.class, GroupResult.class)
.keyConverter(document -> ...)
.valueConverter(document -> ...)
.execute();Si un mappage clé/valeur de base et une forme de résultat différente sont nécessaires, vous pouvez spécifier directement le convertisseur. Vous pouvez également connecter executeLookup(rightBuilder, spec) aux résultats de regroupement.