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

Spring data mongodb дизайн на приложение и агрегиране на данни

Всеки път, когато на Spring Data Mongo липсва AggregationOperation, от която се нуждаете (за възпроизвеждане на $addFields , $redact ...), заобиколно решение (някои може да кажат бързо и мръсно решение) е да прехвърлите необработеното агрегиране на Spring, като използвате директно инструментите 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() се предава на тръбопровода за агрегиране като List<Document> (всъщност List<? extends Bson> в сурова форма, както е предложено по-горе, като използвате Document.parse() и можете, разбира се, да използвате и new Document() за да изглежда повече като правилен OOP код. Склонен съм да използвам необработената форма, когато необработеното агрегиране е сложно или тъй като много вложени компоненти за вложен документ са твърде многословни за мен, но това е въпрос на вкус.

АКТУАЛИЗАЦИЯ 2020.

Използвайте това заобиколно решение вместо. С това е лесно да използвате както AggregationOperation, предоставена от Spring, така и вашите собствени „сурови“ етапи на агрегиране на едно и също място.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Работа с PTVS, IronPython и MongoDB

  2. ArrayFilter в mongoose

  3. Добавете поле, което не е в схемата с мангуста

  4. Съвети за планиране на схема на MongoDB

  5. Как да четете/пишете документ в паралелно изпълнение с mongoDB/mongoose