MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak zastosować group by na zagnieżdżonym dokumencie w MongoDB za pomocą MongoTemplate?

Spring Data MongoTemplate kod dla danej agregacji jest następujący.

Zauważ, że dodałem projekt etap przed grupą . Ten projekt jest wymagane; jeśli zagnieżdżone pola („details.student._id” i „details.studentStatus.statusCode”) są używane bezpośrednio w grupie etap występują błędy "FieldPath field names may not contain '.'." i nie mógł zostać rozwiązany (a dzieje się tak tylko wtedy, gdy używasz więcej niż jednego pola w grupowaniu).

Wynik jest taki sam jak w podanej agregacji. Użyłem najnowszych sterowników Spring i MongoDB z Javą 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
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB Jak uzyskać wszystkie AKTUALNIE otwarte kursory i zapytania, które uruchamiają?

  2. Jak wstawić dane do kolekcji mongodb przy użyciu sterownika c# 2.0?

  3. Nie można uruchomić mongos

  4. Mongodb czytać zamki

  5. Aktualizacja pola dokumentu w mongo na podstawie wartości innego pola