MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Agregação de grupo usando dados de primavera mongodb


Você está basicamente procurando por extractYear() que mapeia para o $year operador com MongoDB:
Aggregation aggregation = Aggregation.newAggregation(
    Aggregation.match(new Criteria().andOperator(criteria())),
    Aggregation.project().and("invoiceDate").extractYear().as("_id"),
    Aggregation.group("_id"),
    Aggregation.sort(Sort.Direction.DESC, "_id)
)

Isso geralmente precisa entrar em um $project para deixar os ajudantes felizes.

Se você realmente deseja a expressão dentro do $group então você pode adicionar uma expressão de operação personalizada:
Aggregation aggregation = Aggregation.newAggregation(
  Aggregation.match(new Criteria().andOperator(criteria())),
  new AggregationOperation() {
    @Override
    public Document toDocument(AggregationOperationContext aggregationOperationContext) {
      return new Document("$group",
        new Document("_id", new Document("$year","$invoiceDate") )
      );
    }
  },
  Aggregation.sort(Sort.Direction.DESC, "_id)
)