sql >> Database >  >> NoSQL >> MongoDB

Hoe group by toepassen op genest document in MongoDB met MongoTemplate?

The Spring Data MongoTemplate code voor de gegeven aggregatie is als volgt.

Merk op dat ik een project heb toegevoegd podium voor de groep . Dit project Is benodigd; als de geneste velden ("details.student._id" en "details.studentStatus.statusCode") direct binnen de groep worden gebruikt stage there are errors "FieldPath field names may not contain '.'." en kon niet worden opgelost (en dit gebeurt alleen wanneer u meer dan één veld in de groepering gebruikt).

Het resultaat is hetzelfde als dat van de aggregatie die u hebt opgegeven. Ik heb de nieuwste Spring- en MongoDB-stuurprogramma's gebruikt met 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. Redis gebruiken als cache voor een mysql-database

  2. Mongodb $lookup met genest document

  3. Cloudera Impala:realtime zoekopdrachten in Apache Hadoop, echt

  4. doRedis met vreemde socketverbindingsfout in Ubuntu Linux, R en RStudio