Hướng dẫn partial index mongodb - chỉ mục một phần mongodb
Tài liệu về nhà → Hướng dẫn sử dụng MongoDB → MongoDB Manual Chỉ mục một phần chỉ lập chỉ mục các tài liệu trong một bộ sưu tập đáp ứng biểu thức bộ lọc được chỉ định. Bằng cách lập chỉ mục một tập hợp con của các tài liệu trong một bộ sưu tập, các chỉ mục một phần có yêu cầu lưu trữ thấp hơn và giảm chi phí hiệu suất để tạo và bảo trì chỉ số. Để tạo chỉ mục 7, hãy sử dụng phương thức 8 với tùy chọn 9. Tùy chọn 9 chấp nhận một tài liệu chỉ định điều kiện bộ lọc bằng cách sử dụng:
Ví dụ: thao tác sau đây tạo ra một chỉ số ghép chỉ lập chỉ mục các tài liệu có trường 2 lớn hơn 5.
Bạn có thể chỉ định tùy chọn 9 cho tất cả các loại chỉ mục MongoDB.MẹoXem thêm:Để tìm hiểu cách quản lý các chỉ mục trong La bàn MongoDB, hãy xem Quản lý các chỉ mục. MongoDB sẽ không sử dụng chỉ mục một phần cho hoạt động truy vấn hoặc sắp xếp nếu sử dụng chỉ số kết quả trong tập kết quả không đầy đủ. Để sử dụng chỉ mục một phần, truy vấn phải chứa biểu thức bộ lọc (hoặc biểu thức bộ lọc được sửa đổi chỉ định một tập hợp con của biểu thức bộ lọc) là một phần của điều kiện truy vấn của nó. Ví dụ, được đưa ra chỉ số sau:
Truy vấn sau đây có thể sử dụng chỉ mục vì vị từ truy vấn bao gồm điều kiện 4 khớp với một tập hợp con của các tài liệu được khớp với biểu thức bộ lọc chỉ mục 5:
Tuy nhiên, truy vấn sau không thể sử dụng chỉ mục một phần trên trường 6 vì sử dụng chỉ số kết quả trong tập kết quả không đầy đủ. Cụ thể, vị từ truy vấn bao gồm điều kiện 7 trong khi chỉ mục có bộ lọc 8. Đó là, truy vấn 9 phù hợp với nhiều tài liệu hơn (ví dụ: một nhà hàng Ý có xếp hạng bằng 1) so với được lập chỉ mục.
Tương tự, truy vấn sau không thể sử dụng chỉ mục một phần vì vị từ truy vấn không bao gồm biểu thức bộ lọc và sử dụng chỉ mục sẽ trả về một tập kết quả không đầy đủ.
Các chỉ mục một phần nên được ưu tiên hơn các chỉ mục thưa thớt. Chỉ số một phần cung cấp các lợi ích sau:
Các chỉ mục thưa thớt chọn các tài liệu để chỉ số chỉ dựa trên sự tồn tại của trường được lập chỉ mục hoặc cho các chỉ mục hợp chất, sự tồn tại của các trường được lập chỉ mục. Các chỉ mục một phần xác định các mục nhập chỉ mục dựa trên bộ lọc được chỉ định. Bộ lọc có thể bao gồm các trường khác ngoài các khóa chỉ mục và có thể chỉ định các điều kiện khác ngoài việc kiểm tra sự tồn tại. Ví dụ, một chỉ mục một phần có thể thực hiện hành vi tương tự như chỉ mục thưa thớt:
Chỉ số một phần này hỗ trợ các truy vấn tương tự như chỉ số thưa thớt trên trường 0.Tuy nhiên, một chỉ mục một phần cũng có thể chỉ định các biểu thức bộ lọc trên các trường khác với khóa chỉ mục. Ví dụ: thao tác sau đây tạo ra một chỉ mục một phần, trong đó chỉ mục trên trường 0 nhưng biểu thức bộ lọc nằm trên trường 2:
Để trình tối ưu hóa truy vấn chọn chỉ mục một phần này, vị từ truy vấn phải bao gồm một điều kiện trên trường 0 cũng như một trận đấu không null trên trường 2.Ví dụ: truy vấn sau có thể sử dụng chỉ mục vì nó bao gồm cả điều kiện trên trường 0 và khớp không null trên trường 2:
Tuy nhiên, truy vấn sau không thể sử dụng chỉ mục vì nó bao gồm một khớp null trên trường 2, không được phép bởi biểu thức bộ lọc 8:
Bắt đầu từ MongoDB 5.0, nhiều chỉ mục một phần có thể được tạo bằng cách sử dụng cùng một mẫu khóa miễn là các trường PartialFilterExpression không thể hiện các bộ lọc tương đương. Trong các phiên bản trước của MongoDB, việc tạo ra nhiều chỉ mục một phần không được phép khi sử dụng cùng một mẫu khóa với các phần khác nhau. Bạn không thể chỉ định cả tùy chọn 9 và tùy chọn 0. 1 Các chỉ mục không thể là chỉ số một phần.Các chỉ số khóa của Shard không thể là chỉ số một phần. Xem xét một bộ sưu tập 2 chứa các tài liệu giống như
Bạn có thể thêm một chỉ mục một phần trên các trường 3 và 6 chỉ chọn vào các tài liệu chỉ mục trong đó trường 5 là 6: 0Sau đó, truy vấn sau đây trên bộ sưu tập 2 sử dụng chỉ số một phần để trả lại các nhà hàng ở khu vực Bronx với 5 bằng 6: 1Tuy nhiên, truy vấn sau không thể sử dụng chỉ mục một phần vì biểu thức truy vấn không bao gồm trường 5: 2Chỉ mục một phần chỉ lập chỉ mục các tài liệu trong một bộ sưu tập đáp ứng biểu thức bộ lọc được chỉ định. Nếu bạn chỉ định cả 9 và ràng buộc duy nhất, ràng buộc duy nhất chỉ áp dụng cho các tài liệu đáp ứng biểu thức bộ lọc. Một chỉ số một phần với một ràng buộc duy nhất không ngăn chặn việc chèn các tài liệu không đáp ứng các ràng buộc duy nhất nếu các tài liệu không đáp ứng các tiêu chí lọc.Ví dụ: Bộ sưu tập 2 chứa các tài liệu sau: 3Hoạt động sau đây tạo ra một chỉ mục chỉ định một ràng buộc duy nhất trên trường 3 và biểu thức bộ lọc một phần 4. 4Chỉ số ngăn chặn việc chèn các tài liệu sau vì các tài liệu đã tồn tại với các tên người dùng được chỉ định và các trường 5 lớn hơn 6: 5Tuy nhiên, các tài liệu sau đây có tên người dùng trùng lặp được cho phép vì ràng buộc duy nhất chỉ áp dụng cho các tài liệu có 5 lớn hơn hoặc bằng 21. 6 |