Nhiều chỉ mục mongodb

Các mục hỗ trợ chỉ thực hiện hiệu quả của 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 mục thích hợp tồn tại cho một truy vấn, MongoDB có thể sử dụng mục này để giới hạn số lượng tài liệu mà nó phải kiểm tra

Nội dung chính Hiển thị

  • Chỉ số thu thập MongoDB là gì?
  • Chỉ số trong bộ sưu tập MongoDB tập tin ở đâu?
  • Việc sử dụng một mục mục là gì?
  • Chỉ mục trong NoQuery là gì?

Các mục chỉ là cấu trúc dữ liệu đặc biệt [1] lưu trữ một phần dữ liệu nhỏ của bộ sưu tập được đặt ở dạng dễ dàng đ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 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 hệ số 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 theo cách sử dụng thứ tự trong chỉ mục

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

Nhiều chỉ mục mongodb

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

MongoDB tạo ra một 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ố

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

5 Ngăn khách hàng chèn hai tài liệu có cùng giá trị cho trường

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

5. You can't bỏ mục này chỉ trên trường

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

5

Ghi chú

Trong các cụm mảnh vỡ, nếu bạn không sử dụng trường

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

5 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

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

5 để ngăn chặn 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. phải đảm bảo tính duy nhất của các giá trị trong trường

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

5 để ngăn ngừa lỗi. Điều này thường được thực hiện bằng cách sử dụng ObjectId được tạo tự động tiêu chuẩn


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. Chọn menu thả xuống 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


Tên mặc định cho một mục là sự kết hợp của các khóa được thiết lập chỉ mục và hướng của mỗi khóa trong mục (tức là 1 hoặc -1) bằng cách sử dụng gạch dưới dấu phân cách. Ví dụ. một 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 mục chỉ với một tên tùy chỉnh, đúng 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ề kho hàng hiện có. Phương thức

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

5 sau đây tạo ra một mục duy nhất 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.myColl.createIndex( { category: 1 }, { collation: { locale: "fr" } } )

3

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

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

9. You can't change name a target item after being created. Thay vào đó, bạn phải bỏ qua và tạo lại mục với một tên mới

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

Ngoài số

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

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

Đối chiếu với một số trường duy nhấ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 khóa mục không quan trọng vì MongoDB có thể đi qua số theo một hướng trong hai hướng

Xem các mục trường đơn và sắp xếp với một mục trường để biết thêm thông tin về các 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 mục ghép

Thứ tự của các trường được liệt kê trong một số tổng hợp duy nhất có ý nghĩa. Không giới hạn, nếu chỉ bao gồm một số bao gồm

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

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

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

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

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

62, sắp xếp theo

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

64

Đối chiếu với các 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 mục 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 mục hợp nhất

Xem thêm

  • Mixed number only,

  • 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 mục MultiKey để thiết lập chỉ mục nội dung được lưu trữ trong các mảng. Nếu bạn thiết 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 mục đa chức năng này cho phép truy vấn chọn các tài liệu có chứa mảng bằng cách đối sánh trên phần tử hoặc phần tử của mảng. MongoDB tự động xác định xem có nên tạo một mục đa năng hay không nếu trường được lập chỉ mục chứa mảng giá trị;

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

Để hỗ trợ 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 mục 2D sử dụng hình học phẳng khi trả về kết quả và các mục 2DSphere sử dụng hình học hình cầu để trả về kết quả

Xem

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

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

MongoDB cung cấp các loại danh mục

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

66 Hỗ trợ tìm chuỗi nội dung tìm kiếm trong bộ sưu tập. Các mục văn bản này chỉ lưu trữ các từ dừng cụ thể có thể về ngôn ngữ (ví dụ. "", "A", "or") 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 hash, MongoDB cung cấp loại chỉ mục hash, trong đó thiết lập chỉ mục cho hash có giá trị của một trường. Các mục này chỉ 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 đối sánh 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 cụm từ chỉ mục. Các bộ sưu tập tập hợp được tạo ra với một mục cụm cụm duy nhất được gọi là các bộ sưu tập cụm cụm

Xem các tập hợp cụm từ

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

Chỉ mục một phần chỉ thiết lập mục tài liệu trong một bộ sưu tập tập tin trả lời biểu thức bộ lọc đã được định nghĩa. Bằng cách thiết 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, 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 quả để tạo và duy trì số lượng

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

Thuộc tính thưa thớt của một mục mục chắc chắn rằng 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)

Các mục TTL chỉ là các 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 được xác định rõ nhất như sự kiện dữ liệu được tạo ra bằng máy, nhật ký và phiên bản thông tin 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. Data data from the collections by way set TTL for the direction of development

New in version 4. 4

Các mục ẩn chỉ không hiển thị cho kế hoạch thiết lập 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 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 mục mà không thực sự hủy bỏ mục đó. Nếu tác động là tiêu cực, người dùng có thể bỏ chỉ mục thay thế vì phải tạo lại một mục bị rơi. Và bởi vì các mục được duy trì hoàn toàn trong khi ẩn, các mục ngay lập tức có sẵn để sử dụng khi chưa từng thấy

Ngoại trừ mục

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

5, bạn có thể ẩn bất kỳ mục nào

Các 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 quả 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ó mục

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

Đố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 mục chỉ để so sánh chuỗi, một thao tác cũng phải chỉ định cùng một tham chiếu. Đó là, một 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 thiết 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.createIndex( { category: 1 }, { collation: { locale: "fr" } } )

68 has an only on the field

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

69 with locale đối chiếu

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

70.

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

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

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

6

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.createIndex( { category: 1 }, { collation: { locale: "fr" } } )

7

Đối chiếu với một số hỗn hợp duy nhất trong đó các 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 số 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

Ví dụ. bộ sưu tập

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

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

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

64 và

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

33 và trường chuỗi

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

69; .

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

6

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

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

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

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

8

active after, using the binary object

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

76 to so sánh chuỗi trên trường

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

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

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

79 của truy vấn.

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

2

Để biết thêm thông tin về phản đối, hãy xem trang tham khảo đối chiếu

Các 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,

  • Only number 2D and

  • CHỈ SỐ GEOHAYSTACK

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

Để biết chi tiết về chỉ mục giao lộ, hãy xem Giao lộ chỉ mục

Một số hạn chế nhất định được áp dụng cho các mục chỉ mục, chẳng hạn như độ dài của các mục từ 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 mục để biết chi tiết

Mặc dù các chỉ mục có thể cải thiện hiệu quả truy vấn tốt, nhưng các chỉ mục này cũng hiển thị một số cân nhắc về hoạt động. Xem các cân nhắc kích hoạt cho các 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 chế độ 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 mục, sử dụng

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

60 thay vì

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

61 làm đặc điểm kỹ thuật. Điều này không có bất kỳ ảnh hưởng nào đến chỉ số kết quả

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

Thư mục là cấu trúc dữ liệu đặc biệt [1] lưu trữ một phần dữ liệu nhỏ của bộ sưu tập được đặt ở dạng dễ dàng đ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 theo giá trị của trường. cấu trúc dữ liệu đặc biệt [1] lưu trữ một phần nhỏ tập dữ liệu của bộ sưu tập ở dạng dễ duyệt . Chỉ mục lưu trữ giá trị của một trường cụ thể hoặc tập hợp các trường, được sắp xếp theo giá trị của trường.

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

Tìm mục Bạn có thể tìm thấy tất cả các mục có sẵn trong bộ sưu tập MongoDB tập tin bằng cách sử dụng phương thức GetIndexes. Điều này sẽ trả về tất cả các 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 mục do người dùng tạo ra. 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 sinh viên do người dùng tạo chỉ mục.

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

Các mục 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 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ở dữ liệu cho cả công việc nghiên 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. để nhanh chóng xác định vị trí dữ liệu mà không phải tìm kiếm mọi hàng trong bảng cơ sở dữ liệu mỗi khi bảng cơ sở dữ liệu được truy cập