MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да приложа група по върху вложен документ в MongoDB с помощта на MongoTemplate?

Пролетните данни MongoTemplate кодът за даденото агрегиране е както следва.

Имайте предвид, че добавих проект етап преди групата . Този проект изисква се; ако вложените полета ("details.student._id" и "details.studentStatus.statusCode") се използват директно в групата етап има грешки "FieldPath field names may not contain '.'." и не може да бъде разрешено (и това се случва само когато използвате повече от едно поле в групирането).

Резултатът е същият като този на обобщението, което сте предоставили. Използвах най-новите драйвери за Spring и MongoDB с 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
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. В Jongo, как да намерите множество документи от Mongodb чрез списък с идентификатори

  2. Управление на AWS:Как да спестите 30% от разходите си за хостинг на MongoDB

  3. Как използвате Mongoose, без да дефинирате схема?

  4. Грешка:свържете ETIMEDOUT 54.162.26.95:17185

  5. MongoDB shell:как да търсите колекции, които съответстват на име или регулярен израз