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

Đường ống và chỉ mục tổng hợp

Nói chung, chỉ các toán tử đường ống mới có thể được chuyển thành truy vấn thông thường ($match , $limit , $sort$skip ) sẽ có thể sử dụng các chỉ mục trên một tập hợp. Đây là một trong những lý do khiến $geoNear toán tử được thêm vào trong 2.4 phải ở đầu quy trình.

Sau khi bạn thay đổi các tài liệu với $project , $group hoặc $unwind chỉ mục không còn hợp lệ / có thể sử dụng được nữa.

Nếu bạn có một chỉ mục trên một trường mảng, bạn vẫn có thể sử dụng nó trước $unwind để tăng tốc độ lựa chọn tài liệu theo quy trình và sau đó tinh chỉnh thêm các tài liệu đã chọn bằng $match thứ hai .

Xem xét các tài liệu như:

{ tags: [ 'cat', 'bird', 'blue' ] }

Với chỉ mục trên thẻ tags .

Nếu bạn chỉ muốn nhóm các thẻ bắt đầu bằng b thì bạn có thể thực hiện tổng hợp như:

{ pipeline: [
      { $match : { tags : /^b/ } },
      { $unwind : '$tags' },
      { $match : { tags : /^b/ } },
      /* the rest */
  ] }

$match đầu tiên hạt thô có khớp không bằng cách sử dụng chỉ mục trên thẻ tags .

Trận đấu thứ hai sau $unwind sẽ không thể sử dụng chỉ mục (tài liệu ở trên hiện là 3 tài liệu) nhưng có thể đánh giá từng tài liệu đó để lọc ra các tài liệu bổ sung được tạo (để xóa {tags:'cat'} khỏi ví dụ).

HTH - Rob.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Truy vấn trong tài liệu lồng nhau trong mongodb

  2. MongoDB Tìm Khớp Mảng Chính xác nhưng thứ tự không quan trọng

  3. Truy vấn Mongoose về tình trạng ngày không có kết quả, MongoDB Shell hoạt động

  4. Các tính năng của MongoDB trong ClusterControl 1.4

  5. Bản ghi mới nhất theo ngày cho từng nhóm mongodb mục