sql >> Databasteknik >  >> NoSQL >> MongoDB

Gruppaggregering med hjälp av vårdata mongodb

Du letar i princip efter extractYear() som mappas till $year operatör med 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)
)

Detta måste vanligtvis gå in i ett $project för att göra medhjälparna nöjda.

Om du verkligen vill ha uttrycket inom $group sedan kan du lägga till ett anpassat operationsuttryck:

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



  1. MongoDB-fråga med ett "eller"-villkor

  2. Hur använder man sadd med flera element i Redis med Python API?

  3. MongoDB-skal:hur man söker efter samlingar som matchar ett namn eller regex

  4. MongoDB fungerar inte i Vagrant Centos Box