MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Agregasi Mongo vs Java untuk loop dan kinerja

Dengan Agregasi, seluruh kueri dijalankan sebagai satu proses di server MongoDB - program aplikasi akan mendapatkan kursor hasil dari server.

Dengan program Java juga Anda mendapatkan kursor dari database server sebagai input untuk pemrosesan dalam aplikasi. Kursor respons dari server akan menjadi kumpulan data yang lebih besar dan akan menggunakan lebih banyak bandwidth jaringan. Dan kemudian ada pemrosesan dalam program aplikasi, dan ini menambahkan lebih banyak langkah untuk menyelesaikan kueri.

Saya pikir opsi agregasi adalah pilihan yang lebih baik - karena semua pemrosesan (pencocokan awal dan penyaringan array) terjadi pada server database sebagai satu proses.

Juga, perhatikan langkah-langkah kueri agregasi yang telah Anda posting dapat dilakukan dengan cara yang efisien. Alih-alih beberapa tahap (2, 3, 4 dan 5) Anda dapat melakukan operasi tersebut dalam dua tahap - gunakan $project dengan $map pada larik luar dan kemudian $filter pada larik dalam lalu $filter larik luar.

Agregasi:

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. MongoDB:Bagaimana cara menghitung bidang jika nilainya cocok dengan suatu kondisi?

  2. Bagaimana cara mendapatkan semua hasil jika bidang bersantai tidak ada di mongodb

  3. Apa keuntungan menggunakan database bebas skema seperti MongoDB dibandingkan dengan database relasional?

  4. Bagaimana cara membuat serial ObjectId ke JSON?

  5. Menambahkan skor ke agregasi MongoDB menggunakan $switch