MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Agrégation de groupe à l'aide de données de printemps mongodb

Vous recherchez essentiellement extractYear() qui correspond à $year opérateur avec 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)
)

Cela doit généralement aller dans un $project afin de rendre les assistants heureux.

Si vous voulez vraiment l'expression dans le $group vous pouvez ensuite ajouter une expression d'opération personnalisée :

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)
)