Hướng dẫn what is index in mongodb collection? - chỉ mục trong bộ sưu tập mongodb là gì?

Các chỉ mục hỗ trợ thực hiện hiệu quả các truy vấn trong MongoDB. Không có chỉ mục, MongoDB phải thực hiện quét thu thập, tức là quét mọi tài liệu trong một bộ sưu tập, để chọn các tài liệu phù hợp với câu lệnh truy vấn. Nếu một chỉ mục thích hợp tồn tại cho một truy vấn, MongoDB có thể sử dụng chỉ mục để giới hạn số lượng tài liệu mà nó phải kiểm tra.

Các chỉ mục là các cấu trúc dữ liệu đặc biệt [1] lưu trữ một phần nhỏ dữ liệu của bộ sưu tập được đặt ở dạng dễ đi qua. Chỉ mục lưu trữ giá trị của một trường hoặc tập hợp các trường cụ thể, được đặt hàng theo giá trị của trường. Việc đặt hàng của các mục nhập chỉ mục hỗ trợ các phù hợp bình đẳng hiệu quả và các hoạt động truy vấn dựa trên phạm vi. Ngoài ra, MongoDB có thể trả về kết quả được sắp xếp bằng cách sử dụng thứ tự trong chỉ mục.

Sơ đồ sau đây minh họa một truy vấn chọn và đặt hàng các tài liệu phù hợp bằng cách sử dụng chỉ mục:

Hướng dẫn what is index in mongodb collection? - chỉ mục trong bộ sưu tập mongodb là gì?

Về cơ bản, các chỉ mục trong MongoDB tương tự như các chỉ mục trong các hệ thống cơ sở dữ liệu khác. MongoDB xác định các chỉ mục ở cấp độ thu thập và hỗ trợ các chỉ mục trên bất kỳ trường hoặc trường con nào của các tài liệu trong bộ sưu tập MongoDB.

MongoDB tạo ra một chỉ mục duy nhất trên trường _ID trong quá trình tạo ra một bộ sưu tập. Chỉ số _id ngăn khách hàng chèn hai tài liệu có cùng giá trị cho trường _id. Bạn không thể bỏ chỉ mục này trên trường _id.

Ghi chú

Trong các cụm mảnh vỡ, nếu bạn không sử dụng trường _id làm phím Shard, thì ứng dụng của bạn phải đảm bảo tính duy nhất của các giá trị trong trường _id để ngăn ngừa lỗi. Điều này được thực hiện nhiều nhất bằng cách sử dụng một ObjectID tự động tạo tiêu chuẩn.must ensure the uniqueness of the values in the _id field to prevent errors. This is most-often done by using a standard auto-generated ObjectId.


Sử dụng menu chọn ngôn ngữ của bạn ở phía trên bên phải để đặt ngôn ngữ của các ví dụ trên trang này.Select your language drop-down menu in the upper-right to set the language of the examples on this page.


Tên mặc định cho một chỉ mục là sự kết hợp của các khóa được lập chỉ mục và hướng của mỗi khóa trong chỉ mục (tức là 1 hoặc -1) bằng cách sử dụng dấu gạch dưới làm dấu phân cách. Ví dụ: một chỉ mục được tạo trên

db.myColl.createIndex( { category: 1 }, { collation: { locale: "fr" } } )

2 có tên

db.myColl.createIndex( { category: 1 }, { collation: { locale: "fr" } } )

3.

Bạn có thể tạo các chỉ mục với một tên tùy chỉnh, chẳng hạn như tên có thể đọc được nhiều hơn so với mặc định. Ví dụ: hãy xem xét một ứng dụng thường xuyên truy vấn bộ sưu tập

db.myColl.createIndex( { category: 1 }, { collation: { locale: "fr" } } )

4 để điền dữ liệu về hàng tồn kho hiện có. Phương thức

db.myColl.createIndex( { category: 1 }, { collation: { locale: "fr" } } )

5 sau đây tạo ra một chỉ mục trên

db.myColl.createIndex( { category: 1 }, { collation: { locale: "fr" } } )

6 và

db.myColl.createIndex( { category: 1 }, { collation: { locale: "fr" } } )

7 có tên

db.myColl.createIndex( { category: 1 }, { collation: { locale: "fr" } } )

8:

db.products.createIndex(
{ item: 1, quantity: -1 } ,
{ name: "query for inventory" }
)

Bạn có thể xem tên chỉ mục bằng phương thức

db.myColl.createIndex( { category: 1 }, { collation: { locale: "fr" } } )

9. Bạn không thể đổi tên một chỉ mục sau khi được tạo. Thay vào đó, bạn phải bỏ và tạo lại chỉ mục với một tên mới.

MongoDB cung cấp một số loại chỉ mục khác nhau để hỗ trợ các loại dữ liệu và truy vấn cụ thể.

Ngoài chỉ số _id do MongoDB xác định, MongoDB hỗ trợ việc tạo các chỉ mục tăng dần/giảm dần do người dùng xác định trên một trường của tài liệu.

Đối với một chỉ số trường và các hoạt động sắp xếp, thứ tự sắp xếp (nghĩa là tăng dần hoặc giảm dần) của khóa chỉ mục không quan trọng vì MongoDB có thể đi qua chỉ số theo một trong hai hướng.

Xem các chỉ mục trường đơn và sắp xếp với một chỉ mục trường để biết thêm thông tin về các chỉ mục trường đơn.

MongoDB cũng hỗ trợ các chỉ mục do người dùng xác định trên nhiều trường, tức là các chỉ mục ghép.

Thứ tự của các trường được liệt kê trong một chỉ số ghép có ý nghĩa. Chẳng hạn, nếu một chỉ số ghép bao gồm

db.myColl.find( { category: "cafe" } ).collation( { locale: "fr" } )

1, chỉ số sẽ sắp xếp đầu tiên là

db.myColl.find( { category: "cafe" } ).collation( { locale: "fr" } )

2 và sau đó, trong mỗi giá trị

db.myColl.find( { category: "cafe" } ).collation( { locale: "fr" } )

2, sắp xếp theo

db.myColl.find( { category: "cafe" } ).collation( { locale: "fr" } )

4.

Đối với các chỉ mục hợp chất và các hoạt động sắp xếp, thứ tự sắp xếp (nghĩa là tăng dần hoặc giảm dần) của các khóa chỉ mục có thể xác định xem chỉ mục có thể hỗ trợ hoạt động sắp xếp hay không. Xem thứ tự sắp xếp để biết thêm thông tin về tác động của thứ tự chỉ số đối với kết quả trong các chỉ mục ghép.

Xem thêm:

  • Chỉ số hỗn hợp,

  • Sắp xếp trên nhiều trường và

  • Quy tắc ESR (bình đẳng, sắp xếp, phạm vi)

MongoDB sử dụng các chỉ mục MultiKey để lập chỉ mục nội dung được lưu trữ trong các mảng. Nếu bạn lập chỉ mục một trường chứa giá trị mảng, MongoDB sẽ tạo các mục chỉ mục riêng cho mọi phần tử của mảng. Các chỉ mục đa năng này cho phép các truy vấn chọn các tài liệu có chứa mảng bằng cách khớp trên phần tử hoặc các phần tử của mảng. MongoDB tự động xác định xem có nên tạo một chỉ mục đa năng hay không nếu trường được lập chỉ mục chứa giá trị mảng; Bạn không cần chỉ định rõ ràng loại đa năng.

Xem các chỉ mục MultiKey và giới hạn chỉ mục MultiKey để biết thêm thông tin về các chỉ mục MultiKey.

Để hỗ trợ các truy vấn hiệu quả của dữ liệu tọa độ không gian địa lý, MongoDB cung cấp hai chỉ mục đặc biệt: Các chỉ mục 2D sử dụng hình học phẳng khi trả về kết quả và các chỉ mục 2DSphere sử dụng hình học hình cầu để trả về kết quả.

Xem

db.myColl.find( { category: "cafe" } ).collation( { locale: "fr" } )

5 Index Internals để giới thiệu cấp độ cao về các chỉ số không gian địa lý.

MongoDB cung cấp loại chỉ mục

db.myColl.find( { category: "cafe" } ).collation( { locale: "fr" } )

6 hỗ trợ tìm kiếm nội dung chuỗi trong bộ sưu tập. Các chỉ mục văn bản này không lưu trữ các từ dừng cụ thể về ngôn ngữ (ví dụ: "", "A", "hoặc") và bắt nguồn các từ trong một bộ sưu tập để chỉ lưu trữ các từ gốc.

Xem chỉ mục văn bản để biết thêm thông tin về chỉ mục văn bản và tìm kiếm.

Để hỗ trợ Sharding dựa trên băm, MongoDB cung cấp loại chỉ mục băm, trong đó lập chỉ mục cho băm có giá trị của một trường. Các chỉ mục này có phân phối các giá trị ngẫu nhiên hơn trong phạm vi của chúng, nhưng chỉ hỗ trợ các khớp bình đẳng và không thể hỗ trợ các truy vấn dựa trên phạm vi.

Bắt đầu từ MongoDB 5.3, bạn có thể tạo một bộ sưu tập với một chỉ mục được phân cụm. Các bộ sưu tập được tạo ra với một chỉ mục phân cụm được gọi là các bộ sưu tập phân cụm.

Xem các bộ sưu tập cụm.

Thuộc tính duy nhất cho một chỉ mục khiến MongoDB từ chối các giá trị trùng lặp cho trường được lập chỉ mục. Khác với các ràng buộc duy nhất, các chỉ mục duy nhất có thể thay thế chức năng với các chỉ mục MongoDB khác.

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ố.

Các chỉ mục một phần cung cấp một siêu chất của chức năng của các chỉ mục thưa thớt và nên được ưu tiên hơn các chỉ mục thưa thớt.

Thuộc tính thưa thớt của một chỉ mục đảm bảo rằng chỉ mục chỉ chứa các mục cho các tài liệu có trường được lập chỉ mục. Các chỉ số bỏ qua các tài liệu không có trường được lập chỉ mục.

Bạn có thể kết hợp tùy chọn chỉ mục thưa thớt với tùy chọn chỉ mục duy nhất để ngăn chặn các tài liệu có giá trị trùng lặp cho (các) trường được lập chỉ mục và bỏ qua các tài liệu lập chỉ mục thiếu (các) trường được lập chỉ mục.

Các chỉ mục TTL là các chỉ mục đặc biệt mà MongoDB có thể sử dụng để tự động xóa tài liệu khỏi bộ sưu tập sau một khoảng thời gian nhất định. Điều này là lý tưởng cho một số loại thông tin nhất định như dữ liệu sự kiện được tạo ra bằng máy, nhật ký và thông tin phiên chỉ cần tồn tại trong cơ sở dữ liệu trong một khoảng thời gian hữu hạn.

Xem: Hết liệu dữ liệu từ các bộ sưu tập bằng cách đặt TTL cho các hướng dẫn triển khai.

Mới trong phiên bản 4.4.

Các chỉ mục ẩn không hiển thị cho trình lập kế hoạch truy vấn và không thể được sử dụng để hỗ trợ truy vấn.

Bằng cách che giấu một chỉ mục từ người lập kế hoạch, người dùng có thể đánh giá tác động tiềm năng của việc bỏ một chỉ mục mà không thực sự bỏ chỉ mục. Nếu tác động là tiêu cực, người dùng có thể bỏ chỉ mục thay vì phải tạo lại một chỉ mục bị rơi. Và bởi vì các chỉ mục được duy trì hoàn toàn trong khi ẩn, các chỉ mục ngay lập tức có sẵn để sử dụng một khi chưa từng thấy.

Ngoại trừ chỉ mục _id, bạn có thể ẩn bất kỳ chỉ mục nào.

Các chỉ mục có thể cải thiện hiệu quả của các hoạt động đọc. Hướng dẫn hiệu suất truy vấn phân tích cung cấp một ví dụ về số liệu thống kê thực thi của truy vấn có và không có chỉ mục.

Để biết thông tin về cách MongoDB chọn một chỉ mục để sử dụng, hãy xem Trình tối ưu hóa truy vấn.

Đối chiếu cho phép người dùng chỉ định các quy tắc cụ thể về ngôn ngữ để so sánh chuỗi, chẳng hạn như các quy tắc cho Lettercase và Dấu nhấn.

Để sử dụng một chỉ mục để so sánh chuỗi, một thao tác cũng phải chỉ định cùng một đối chiếu. Đó là, một chỉ mục với một đối chiếu không thể hỗ trợ một thao tác thực hiện so sánh chuỗi trên các trường được lập chỉ mục nếu thao tác chỉ định một đối chiếu khác.

Ví dụ: Bộ sưu tập

db.myColl.find( { category: "cafe" } ).collation( { locale: "fr" } )

8 có một chỉ mục trên trường chuỗi

db.myColl.find( { category: "cafe" } ).collation( { locale: "fr" } )

9 với locale đối chiếu

db.myColl.find( { category: "cafe" } )

0.

db.myColl.createIndex( { category: 1 }, { collation: { locale: "fr" } } )

Hoạt động truy vấn sau, chỉ định đối chiếu giống như chỉ mục, có thể sử dụng chỉ mục:

db.myColl.find( { category: "cafe" } ).collation( { locale: "fr" } )

Tuy nhiên, thao tác truy vấn sau, theo mặc định sử dụng bộ ghép nhị phân "đơn giản", không thể sử dụng chỉ mục:

db.myColl.find( { category: "cafe" } )

Đối với một chỉ số ghép trong đó các khóa tiền tố chỉ mục không phải là chuỗi, mảng và tài liệu nhúng, một hoạt động chỉ định một đối chiếu khác vẫn có thể sử dụng chỉ mục để hỗ trợ so sánh trên các phím tiền tố chỉ mục.

Ví dụ: Bộ sưu tập

db.myColl.find( { category: "cafe" } ).collation( { locale: "fr" } )

8 có chỉ số hợp chất trên các trường số

db.myColl.find( { category: "cafe" } ).collation( { locale: "fr" } )

4 và

db.myColl.find( { category: "cafe" } )

3 và trường chuỗi

db.myColl.find( { category: "cafe" } ).collation( { locale: "fr" } )

9; Chỉ mục được tạo với Locale đối chiếu

db.myColl.find( { category: "cafe" } )

0 để so sánh chuỗi:

db.myColl.createIndex(
{ score: 1, price: 1, category: 1 },
{ collation: { locale: "fr" } } )

Các hoạt động sau, sử dụng đối chiếu nhị phân

db.myColl.find( { category: "cafe" } )

6 để so sánh chuỗi, có thể sử dụng chỉ mục:

db.myColl.find( { score: 5 } ).sort( { price: 1 } )
db.myColl.find( { score: 5, price: { $gt: NumberDecimal( "10" ) } } ).sort( { price: 1 } )

Hoạt động sau, sử dụng đối chiếu nhị phân

db.myColl.find( { category: "cafe" } )

6 để so sánh chuỗi trên trường

db.myColl.find( { category: "cafe" } ).collation( { locale: "fr" } )

9 được lập chỉ mục, có thể sử dụng chỉ mục để chỉ thực hiện phần

db.myColl.find( { category: "cafe" } )

9 của truy vấn:

db.myColl.find( { score: 5, category: "cafe" } )

Để biết thêm thông tin về đối chiếu, xem trang tham chiếu đối chiếu.

Các chỉ mục sau đây chỉ hỗ trợ so sánh nhị phân đơn giản và không hỗ trợ đối chiếu:

  • chỉ mục văn bản,

  • Chỉ số 2D và

  • GEOHAYSTACK INDEXES.

Khi các tiêu chí truy vấn và dự báo của một truy vấn chỉ bao gồm các trường được lập chỉ mục, MongoDB trả về kết quả trực tiếp từ chỉ mục mà không quét bất kỳ tài liệu nào hoặc đưa tài liệu vào bộ nhớ. Những truy vấn được bảo hiểm có thể rất hiệu quả.

Để biết thêm thông tin về các truy vấn được bảo hiểm, xem truy vấn được bảo hiểm.

MongoDB có thể sử dụng giao điểm của các chỉ mục để thực hiện các truy vấn. Đối với các truy vấn chỉ định các điều kiện truy vấn hợp chất, nếu một chỉ mục có thể thực hiện một phần của điều kiện truy vấn và một chỉ số khác có thể thực hiện một phần khác của điều kiện truy vấn, thì MongoDB có thể sử dụng giao điểm của hai chỉ mục để thực hiện truy vấn. Việc sử dụng chỉ số ghép hoặc việc sử dụng giao điểm chỉ mục có hiệu quả hơn hay không tùy thuộc vào truy vấn cụ thể và hệ thống.

Để biết chi tiết về giao lộ chỉ mục, xem Index Intersection.

Một số hạn chế nhất định áp dụng cho các chỉ mục, chẳng hạn như độ dài của các khóa chỉ mục hoặc số lượng chỉ mục trên mỗi bộ sưu tập. Xem giới hạn chỉ mục để biết chi tiết.

Mặc dù các chỉ mục có thể cải thiện hiệu suất truy vấn, các chỉ mục cũng trình bày một số cân nhắc hoạt động. Xem các cân nhắc hoạt động cho các chỉ mục để biết thêm thông tin.

Các ứng dụng có thể gặp phải hiệu suất giảm trong quá trình xây dựng chỉ mục, bao gồm truy cập đọc/ghi hạn chế vào bộ sưu tập. Để biết thêm thông tin về quy trình xây dựng chỉ mục, hãy xem các bản dựng chỉ mục trên các bộ sưu tập đông dân cư, bao gồm các bản dựng chỉ mục trong phần môi trường được sao chép.

Một số trình điều khiển có thể chỉ định các chỉ mục, sử dụng

db.myColl.createIndex(
{ score: 1, price: 1, category: 1 },
{ collation: { locale: "fr" } } )
0 thay vì
db.myColl.createIndex(
{ score: 1, price: 1, category: 1 },
{ collation: { locale: "fr" } } )
1 làm đặc điểm kỹ thuật. Điều này không có bất kỳ ảnh hưởng đến chỉ số kết quả.

Chỉ số thu thập MongoDB là gì?

Các chỉ mục là các cấu trúc dữ liệu đặc biệt [1] lưu trữ một phần nhỏ dữ liệu của bộ sưu tập được đặt ở dạng dễ đi qua. Chỉ mục lưu trữ giá trị của một trường hoặc tập hợp các trường cụ thể, được đặt hàng theo giá trị của trường.special data structures [1] that store a small portion of the collection's data set in an easy to traverse form. The index stores the value of a specific field or set of fields, ordered by the value of the field.

Chỉ số trong bộ sưu tập MongoDB ở đâu?

Tìm chỉ mục Bạn có thể tìm thấy tất cả các chỉ mục có sẵn trong bộ sưu tập MongoDB bằng cách sử dụng phương thức GetIndexes. Điều này sẽ trả về tất cả các chỉ mục trong một bộ sưu tập cụ thể. Kết quả: Đầu ra chứa chỉ mục _id mặc định và chỉ mục tên chỉ mục do người dùng tạo ra.using the getIndexes method. This will return all the indexes in a specific collection. Result: The output contains the default _id index and the user-created index student name index.

Việc sử dụng một chỉ mục là gì?

Các chỉ mục được sử dụng để nhanh chóng định vị dữ liệu mà không phải tìm kiếm từng hàng trong bảng cơ sở dữ liệu mỗi khi truy cập bảng cơ sở dữ liệu.Các chỉ mục có thể được tạo bằng cách sử dụng một hoặc nhiều cột của bảng cơ sở dữ liệu, cung cấp cơ sở cho cả việc tra cứu ngẫu nhiên nhanh chóng và truy cập hiệu quả các bản ghi được đặt hàng.to quickly locate data without having to search every row in a database table every time a database table is accessed. Indexes can be created using one or more columns of a database table, providing the basis for both rapid random lookups and efficient access of ordered records.

Chỉ mục trong NoQuery là gì?

Lập chỉ mục là quá trình liên kết một khóa với vị trí của bản ghi dữ liệu tương ứng.Có nhiều cấu trúc dữ liệu lập chỉ mục được sử dụng trong cơ sở dữ liệu NoQuery.Chúng tôi sẽ thảo luận ngắn gọn về một số phương pháp phổ biến hơn;Cụ thể, lập chỉ mục B-Tree, lập chỉ mục cây T và lập chỉ mục cây O2.the process of associating a key with the location of a corresponding data record. There are many indexing data structures used in NoSQL databases. We will briefly discuss some of the more common methods; namely, B-Tree indexing, T-Tree indexing, and O2-Tree indexing.