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

mongodb - đường ống tra cứu $ sử dụng COLLSCAN thay vì chỉ mục

Quá trình quét bộ sưu tập trong đầu ra giải thích của bạn đề cập đến map_levels bộ sưu tập, như đã lưu ý trong queryPlanner.namespace giá trị. $lookup giai đoạn hợp nhất dữ liệu từ một bộ sưu tập khác vào đường dẫn hiện tại. Vì bạn chưa chỉ định bất kỳ giai đoạn truy vấn nào trước khi $lookup , map_levels bộ sưu tập sẽ được lặp lại bằng cách sử dụng quét bộ sưu tập. Nếu toàn bộ bộ sưu tập đang được tải mà không có bất kỳ tiêu chí lọc hoặc sắp xếp nào, thì việc quét bộ sưu tập sẽ ít tốn chi phí hơn so với việc lặp lại một chỉ mục và tìm nạp tài liệu.

Bạn có thể tránh quét bộ sưu tập hiện tại bằng cách thêm $match trước khi $lookup của bạn (giả sử bạn không muốn xử lý map_levels đầy đủ bộ sưu tập).

Rất tiếc, đầu ra giải thích truy vấn không (như ở MongoDB 4.0) chỉ ra việc sử dụng chỉ mục cho $lookup các giai đoạn. Một giải pháp cho vấn đề này sẽ được giải thích bằng cách sử dụng pipeline trong tra cứu của bạn như một truy vấn tổng hợp cấp cao nhất.

Có một vấn đề liên quan cần xem / upvote trong trình theo dõi vấn đề MongoDB: SERVER-22622:Cải thiện $ lookup giải thích để chỉ ra kế hoạch truy vấn trên bộ sưu tập "từ" .




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bigbluebutton thiết lập ứng dụng khách html5 dev đăng nhập vào cuộc họp với tham gia cuộc gọi api phản hồi html trống

  2. Tôi có thể sử dụng điền trước khi tổng hợp trong mongoose không?

  3. Rails 3 sử dụng MongoDB thông qua bộ điều hợp mongoid - có cách nào để chia sẻ thông số thuộc tính mà không sử dụng Kế thừa bảng đơn không?

  4. biểu diễn java - MongoDB + Solr

  5. Nhập tương đối một gói trong ứng dụng bình trăn