sql >> Databáze >  >> NoSQL >> MongoDB

Jak použít skupinu podle vnořeného dokumentu v MongoDB pomocí MongoTemplate?

Jarní data MongoTemplate kód pro danou agregaci je následující.

Všimněte si, že jsem přidal projekt fázi před skupinou . Tento projekt je požadováno; pokud se vnořená pole ("details.student._id" a "details.studentStatus.statusCode") používají přímo ve skupině fázi jsou chyby "FieldPath field names may not contain '.'." a nelze jej vyřešit (a to se stane pouze tehdy, když v seskupení použijete více než jedno pole).

Výsledek je stejný jako u vámi poskytnuté agregace. Použil jsem nejnovější ovladače Spring a MongoDB s 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. mongoimport výběr typu pole

  2. Psaní dotazu pro přidání více hodnot do klíče v REDIS Hashe?

  3. jak získat všechny klíče a hodnoty v redis v javascriptu?

  4. Jak najít číslo řádku řádku v seřazené kolekci MongoDB pro výpočet jeho percentilu?