sql >> Databáze >  >> NoSQL >> MongoDB

Agregace Mongo vs Java pro smyčku a výkon

S agregací je celý dotaz spuštěn jako jeden proces na serveru MongoDB - aplikační program získá kurzor výsledků ze serveru.

S programem Java také získáváte kurzor z databázového serveru jako vstup pro zpracování v aplikaci. Kurzor odpovědi ze serveru bude obsahovat větší sadu dat a bude využívat větší šířku pásma sítě. A pak je zde zpracování v aplikačním programu, což přidává další kroky k dokončení dotazu.

Myslím, že možnost agregace je lepší volbou - protože veškeré zpracování (počáteční shoda a filtrování pole) probíhá na databázovém serveru jako jeden proces.

Všimněte si také, že kroky agregačního dotazu, které jste zveřejnili, lze provést efektivně. Místo několika fází (2, 3, 4 a 5) můžete tyto operace provádět ve dvou fázích - použijte $project pomocí $map na vnějším poli a poté $filter na vnitřní pole a potom $filter vnější pole.

Agregace:

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. Najděte název sbírky z document._id v meteoru (mongodb)

  2. MongoDB PHP:Jak získám ObjectId pomocí zdroje JSON? (je to prázdné)

  3. Jak vytvořit MongoDB MultiKey index na atributu položek v poli .NET Driver

  4. Mongodb, ovladač linq. Jak konstruovat Obsahuje s proměnnou nebo příkazy