sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan anvender man gruppe efter på indlejret dokument i MongoDB ved hjælp af MongoTemplate?

Spring Data MongoTemplate kode for den givne aggregering er som følger.

Bemærk, at jeg har tilføjet et projekt fase før gruppen . Dette projekt er påkrævet; hvis de indlejrede felter ("details.student._id" og "details.studentStatus.statusCode") bruges direkte i gruppen trin er der fejl "FieldPath field names may not contain '.'." og kunne ikke løses (og dette sker kun, når du bruger mere end ét felt i grupperingen).

Resultatet er det samme som for den sammenlægning, du har angivet. Jeg har brugt de seneste Spring- og MongoDB-drivere med Java 8.

MongoOperations mongoOps = new MongoTemplate(MongoClients.create(), "spr_test");

Aggregation agg = newAggregation(
                                unwind("details"),    
                                project("_id")
                                    .and("details.student._id").as("sid")
                                    .and("details.studentStatus.statusCode").as("statuscode"),
                                group("sid", "statuscode")
                                    .count().as("total")
);

AggregationResults<Document> aggResults = mongoOps.aggregate(agg, "students", Document.class);
aggResults.forEach(System.out::println);



  1. MongoDB:opdatering af et array i array

  2. DB-ref i mongoose uden Schema.ObjectId?

  3. Kan ikke oprette forbindelse til mongo på fjernserveren

  4. PHP opstart mongo:Kan ikke initialisere modulet