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

Agregacja Mongo a Java dla pętli i wydajności

Dzięki agregacji całe zapytanie jest wykonywane jako pojedynczy proces na serwerze MongoDB - program aplikacji pobierze kursor wyników z serwera.

W programie Java otrzymujesz również kursor z serwera bazy danych jako dane wejściowe do przetwarzania w aplikacji. Kursor odpowiedzi z serwera będzie większym zestawem danych i będzie wykorzystywał większą przepustowość sieci. A potem następuje przetwarzanie w programie aplikacji, a to dodaje więcej kroków do zakończenia zapytania.

Myślę, że opcja agregacji jest lepszym wyborem - ponieważ całe przetwarzanie (wstępne dopasowanie i filtrowanie tablicy) odbywa się na serwerze bazy danych jako pojedynczy proces.

Zwróć też uwagę, że opublikowane przez Ciebie kroki agregacji zapytań można wykonać w wydajny sposób. Zamiast wielu etapów (2, 3, 4 i 5) możesz wykonać te operacje w dwóch etapach - użyj $project z $map na zewnętrznej tablicy, a następnie $filter na tablicy wewnętrznej a potem $filter zewnętrzna tablica.

Agregacja:

db.test.aggregate( [
  { 
      $addFields: { 
          Field2: { 
              $map: {
                   input: "$Field2",
                      as: "fld2",
                      in: {
                           Field3: "$$fld2.Field3",
                           Field4: { 
                               $filter: {
                                   input: "$$fld2.Field4",
                                      as: "fld4",
                                    cond: {  $eq: [ "$$fld4.id", "123" ] }
                               }
                           }
                       }
                 } 
          }
      }
  },
  { 
      $addFields: { 
          Field2: { 
              $filter: {
                   input: "$Field2",
                      as: "f2",
                    cond: {  $gt: [ { $size: "$$f2.Field4" }, 0 ] }
              }
          }
      }
  },
] )


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Utracone nanosekundy pochodzące z obiektu ISODate MongoDB

  2. Dziwne wyniki z mongoid przy użyciu Debian squeeze mongodb

  3. Mangusta lub zapytanie

  4. Odmowa połączenia z MongoDB errno 111

  5. jak zaktualizować zagnieżdżony obiekt dokumentu mangusty tylko dla dostarczonych kluczy