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

Spring data mongodb projektowanie aplikacji i agregacja danych

Zawsze, gdy w Spring Data Mongo brakuje operacji agregacji, której potrzebujesz (aby odtworzyć $addFields , $redact ...), obejściem (niektórzy mogą powiedzieć, że szybkim i brudnym rozwiązaniem) jest przekazanie surowej agregacji do Spring, bezpośrednio przy użyciu narzędzi com.mongodb.client :

String collectionName = mongoTemplate.getCollectionName(Payment.class);
MongoCollection<Document> collection = mongoClient.getDatabase(mongoTemplate.getDb().getName()).getCollection(collectionName);

AggregateIterable<Document> ai = collection.aggregate(Arrays.asList(
    Document.parse(/* { "group" : { ... } } */)))

MongoCollection.aggregate() jest przekazywany potok agregacji jako List<Document> (w rzeczywistości List<? extends Bson> w surowej formie, jak sugerowano powyżej, używając Document.parse(), i oczywiście możesz także użyć new Document() aby wyglądał bardziej jak właściwy kod OOP. Zwykle używam surowej formy, gdy surowa agregacja jest złożona lub gdy wiele zagnieżdżonych komponentów dla zagnieżdżonego dokumentu jest dla mnie zbyt gadatliwe, ale to kwestia gustu.

AKTUALIZACJA 2020.

Użyj tego obejścia zamiast. Dzięki temu łatwo jest używać zarówno AggregationOperation dostarczanej przez Spring, jak i własnych „surowych” etapów agregacji w tym samym miejscu.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Strefa czasowa Spring Mongodb Timestamp Wprowadzająca w błąd

  2. Napisz niestandardowe zapytanie w repozytorium mongodb

  3. Jak zaimplementować tagi postów w Mongo?

  4. Jak zaktualizować elementy tablicy zgodne z kryteriami w dokumencie MongoDB?

  5. zapytanie mongodb według podpola