sql >> Database >  >> NoSQL >> MongoDB

Mongo-aggregatie versus Java voor lus en prestaties

Met Aggregation wordt de hele query uitgevoerd als een enkel proces op de MongoDB-server - het applicatieprogramma haalt de resultatencursor van de server.

Met Java-programma krijg je ook een cursor van de databaseserver als invoer voor de verwerking in de applicatie. De responscursor van de server wordt een grotere set gegevens en gebruikt meer netwerkbandbreedte. En dan is er verwerking in het applicatieprogramma, en dit voegt meer stappen toe om de vraag te voltooien.

Ik denk dat de aggregatie-optie een betere keuze is - omdat alle verwerking (de eerste match en het filteren van de array) op de databaseserver plaatsvindt als een enkel proces.

Houd er ook rekening mee dat de aggregatiequerystappen die u had gepost op een efficiënte manier kunnen worden uitgevoerd. In plaats van meerdere fasen (2, 3, 4 en 5) kunt u die bewerkingen in twee fasen uitvoeren - gebruik een $project met $map op de buitenste array en vervolgens $filter op de binnenste array en dan $filter de buitenste array.

De aggregatie:

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. Maak een meertalige tekstindex in MongoDB

  2. MongoDB en upsert-probleem

  3. MongoDB-aggregatie:lopende totalen berekenen van de som van vorige rijen

  4. Hoe verwijder je één 'document' op 'ID' met behulp van de officiële C#-driver voor MongoDB?