MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Tổng hợp Mongo so với Java cho vòng lặp và hiệu suất

Với Aggregation, toàn bộ truy vấn được thực thi như một quá trình duy nhất trên máy chủ MongoDB - chương trình ứng dụng sẽ nhận được con trỏ kết quả từ máy chủ.

Với chương trình Java, bạn cũng nhận được một con trỏ từ máy chủ cơ sở dữ liệu làm đầu vào cho quá trình xử lý trong ứng dụng. Con trỏ phản hồi từ máy chủ sẽ là tập dữ liệu lớn hơn và sẽ sử dụng nhiều băng thông mạng hơn. Và sau đó là quá trình xử lý trong chương trình ứng dụng và điều này bổ sung thêm các bước để hoàn thành truy vấn.

Tôi nghĩ rằng tùy chọn tổng hợp là một lựa chọn tốt hơn - vì tất cả quá trình xử lý (đối sánh ban đầu và lọc mảng) xảy ra trên máy chủ cơ sở dữ liệu như một quy trình duy nhất.

Ngoài ra, hãy lưu ý rằng các bước truy vấn tổng hợp bạn đã đăng có thể được thực hiện một cách hiệu quả. Thay vì nhiều giai đoạn (2, 3, 4 và 5), bạn có thể thực hiện các thao tác đó trong hai giai đoạn - sử dụng $project với $map trên mảng bên ngoài và sau đó là $filter trên mảng bên trong và sau đó $filter mảng bên ngoài.

Tổng hợp:

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. java spring MappingJacksonJsonView không làm toString trên mongodb ObjectId

  2. Play Framework 2.5 làm thế nào để thêm mongoDB?

  3. Lỗi Mongo khi tôi kiểm soát hotfix

  4. AuthSource có nghĩa là gì trong url cơ sở dữ liệu mongo?

  5. Đẩy các mục vào mảng mongo thông qua mongoose