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

MongoDB:tra cứu đường ống hiệu suất chậm so với tra cứu cơ bản

Vấn đề là khi bạn thực hiện lookup sử dụng pipeline với giai đoạn so khớp, thì chỉ mục sẽ chỉ được sử dụng cho các trường được so khớp với $eq operator và chỉ mục còn lại sẽ không được sử dụng.

Và ví dụ bạn đã chỉ định với đường ống sẽ hoạt động như thế này ( một lần nữa chỉ mục sẽ không được sử dụng ở đây vì nó không phải là $eq )

db.matches.aggregate([
  {
    $lookup: {
      from: "players",
      let: {
        ids: {
          $map: {
            input: "$players",
            in: "$$this._id"
          }
        }
      },
      pipeline: [
        {
          $match: {
            $expr: {
              $in: [
                "$_id",
                "$$ids"
              ]
            }
          }
        }
      ],
      as: "players"
    }
  }
])

Vì người chơi là một mảng đối tượng nên trước tiên nó cần được ánh xạ tới mảng id

Sân chơi MongoDB



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB - Nhập dữ liệu

  2. Spring mongodb lấy ID của mục đã chèn sau khi Lưu

  3. MongoDB elemMatch không hoạt động như mong đợi

  4. Làm thế nào để tính toán sự khác biệt giữa các giá trị của các tài liệu khác nhau bằng cách sử dụng tổng hợp mongo?

  5. Tìm và sửa đổi với MongoDB C #