Hướng dẫn how do you create an index on a field in mongodb? - làm cách nào để bạn tạo chỉ mục trên một trường trong mongodb?
Tài liệu về nhà → Hướng dẫn sử dụng MongoDB → MongoDB Manual Show
3Quan trọngPhương pháp MongoshTrang này ghi lại một phương thức 4. Đây không phải là tài liệu cho các lệnh cơ sở dữ liệu hoặc trình điều khiển dành riêng cho ngôn ngữ, chẳng hạn như Node.js. Để sử dụng lệnh cơ sở dữ liệu, hãy xem lệnh 5. 4 method. This is not the documentation for database commands or language-specific drivers, such as Node.js. To use the database command, see the 5 command.Đối với trình điều khiển API MongoDB, hãy tham khảo tài liệu trình điều khiển MongoDB dành riêng cho ngôn ngữ.MongoDB driver documentation. Đối với tài liệu Shell Legacy 6, hãy tham khảo tài liệu để phát hành máy chủ MongoDB tương ứng:
Tạo chỉ mục trên các bộ sưu tập. Để giảm thiểu tác động của việc xây dựng một chỉ mục trên các bộ bản sao và các cụm được che phủ, hãy sử dụng quy trình xây dựng chỉ số cuộn như được mô tả trên các bản dựng chỉ số cuộn trên các bộ bản sao.
2 featureCompitionVersion phải là 3 để tạo các chỉ mục ký tự đại diện. Để biết hướng dẫn về việc thiết lập FCV, hãy xem Phiên bản tương thích tính năng trên triển khai MongoDB 6.0.Để biết các ví dụ về tạo chỉ số ký tự đại diện, hãy xem Tạo một chỉ số ký tự đại diện. Không bắt buộc. Một tài liệu chứa một tập hợp các tùy chọn kiểm soát việc tạo chỉ mục. Xem các tùy chọn để biết chi tiết.
cam kết số nguyên hoặc chuỗi
tài liệu Không bắt buộc. Nếu được chỉ định, chỉ mục chỉ tham chiếu các tài liệu phù hợp với biểu thức bộ lọc. Xem các chỉ mục một phần để biết thêm thông tin. Một biểu thức bộ lọc có thể bao gồm:
Bạn có thể chỉ định tùy chọn 0 cho tất cả các loại chỉ mục MongoDB.
db.myColl.find( { score: 5, category: "cafe" } ) boolean Không bắt buộc. Nếu 5, chỉ mục chỉ tham chiếu các tài liệu với trường được chỉ định. Các chỉ mục này sử dụng ít không gian hơn nhưng hoạt động khác nhau trong một số tình huống (đặc biệt là các loại). Giá trị mặc định là 1. Xem các chỉ mục thưa thớt để biết thêm thông tin.Các loại chỉ mục sau đây thưa thớt theo mặc định và bỏ qua tùy chọn này:
Đối với một chỉ số ghép bao gồm (các) khóa chỉ mục 6 cùng với các khóa của các loại khác, chỉ các trường chỉ mục 6 xác định xem chỉ mục có tham chiếu tài liệu hay không.Đã thay đổi trong phiên bản 3.2: Bắt đầu trong MongoDB 3.2, MongoDB cung cấp tùy chọn để tạo các chỉ mục một phần. 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. Nếu bạn đang sử dụng MongoDB 3.2 trở lên, 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. db.myColl.find( { score: 5, category: "cafe" } ) Số nguyên Không bắt buộc. Chỉ định một giá trị, trong vài giây, là một TTL để kiểm soát thời gian MongoDB giữ lại các tài liệu trong bộ sưu tập này. Xem Dữ liệu hết hạn từ các bộ sưu tập bằng cách đặt TTL để biết thêm thông tin về chức năng này. Điều này chỉ áp dụng cho các chỉ mục TTL. ẩn giấu boolean Không bắt buộc. Một lá cờ xác định liệu chỉ mục có bị ẩn khỏi trình lập kế hoạch truy vấn hay không. Một chỉ số ẩn không được đánh giá là một phần của lựa chọn kế hoạch truy vấn. Mặc định là 1.Để sử dụng tùy chọn 00, bạn phải có FeatureCompitionVersion được đặt thành 01 trở lên. Tuy nhiên, một khi bị ẩn, chỉ số vẫn được ẩn ngay cả với featureCompitionVersion được đặt thành 3 trên các nhị phân MongoDB 4.4.Mới trong phiên bản 4.4.
tài liệu Không bắt buộc. Nếu được chỉ định, chỉ mục chỉ tham chiếu các tài liệu phù hợp với biểu thức bộ lọc. Xem các chỉ mục một phần để biết thêm thông tin. Một biểu thức bộ lọc có thể bao gồm:
Biểu thức bình đẳng (tức là 1 hoặc sử dụng toán tử 2),
Cảnh báoĐối chiếu không được hỗ trợ trong MongoDB 3.2 và các phiên bản trước đó. Trong MongoDB 3.2 và các phiên bản trước đó, không tạo các chỉ mục với tùy chọn đối chiếu không được hỗ trợ vì điều này sẽ chặn nâng cấp lên 3,4, thực thi xác nhận chặt chẽ hơn các tùy chọn chỉ mục.
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:
MẹoĐể tạo chỉ mục 07, 08 hoặc 09 trên bộ sưu tập có đối chiếu không đơn giản, bạn phải chỉ định rõ ràng 10 khi tạo chỉ mục.Nếu bạn đã chỉ định một đối chiếu ở cấp độ thu thập, thì:
MẹoĐể tạo chỉ mục 07, 08 hoặc 09 trên bộ sưu tập có đối chiếu không đơn giản, bạn phải chỉ định rõ ràng 10 khi tạo chỉ mục.Bằng cách chỉ định một đối chiếu 11 của 9 hoặc 13, bạn có thể tạo một chỉ số không nhạy cảm trường hợp. Chỉ số với đối chiếu 11 của 9 đều không nhạy cảm với trường hợp và trường hợp.Bạn có thể tạo nhiều chỉ mục trên cùng một khóa với các đối chiếu khác nhau. Để tạo các chỉ mục với cùng một mẫu chính nhưng các đối chiếu khác nhau, bạn phải cung cấp tên chỉ mục duy nhất. Để 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 16 có một chỉ mục trên trường chuỗi 17 với locale đối chiếu 18.
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:
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: Đố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 16 có chỉ số hợp chất trên các trường số 20 và 21 và trường chuỗi 17; Chỉ mục được tạo với locale đối chiếu 18 để so sánh chuỗi:
Các hoạt động sau, sử dụng đối chiếu nhị phân 24 để so sánh chuỗi, có thể sử dụng chỉ mục:
Các tùy chọn sau chỉ có sẵn cho các chỉ mục văn bản:
Tùy chọn sau đây chỉ có sẵn cho 2DSphere Indexes:
Các tùy chọn sau chỉ có sẵn cho các chỉ mục 2D:
Tùy chọn sau đây chỉ có sẵn cho các chỉ mục Geohaystack:
Ghi chúBị loại bỏ trong MongoDB 5.0Tùy chọn sau đây chỉ có sẵn cho các chỉ mục ký tự đại diện:
Đã thay đổi trong phiên bản 4.2. Đối với featureCompitionVersion 2, 7 sử dụng quy trình xây dựng được tối ưu hóa, có được và giữ một khóa độc quyền trên bộ sưu tập được chỉ định ở đầu và cuối của bản dựng chỉ mục. Tất cả các hoạt động tiếp theo trên bộ sưu tập phải đợi cho đến khi 7 phát hành khóa độc quyền. 7 cho phép các hoạt động đọc và ghi xen kẽ trong phần lớn bản dựng chỉ mục. 7 uses an optimized build process that obtains and
holds an exclusive lock on the specified collection at the start and end of the index build. All subsequent operations on the collection must wait until 7 releases the exclusive lock.
7 allows interleaving read and write operations during the majority of the index build.Đối với featureCompitionVersion 9, 7 sử dụng quy trình xây dựng chỉ mục Pre-4.2 theo mặc định có được khóa độc quyền trên cơ sở dữ liệu cha trong toàn bộ thời gian của quy trình xây dựng. Quá trình xây dựng Pre-4.2 chặn tất cả các hoạt động trên cơ sở dữ liệu và tất cả các bộ sưu tập của nó cho đến khi hoàn thành thao tác. 8 Các chỉ mục không có khóa độc quyền. 7 uses the pre-4.2 index build process which by default obtains an exclusive lock on the parent database for the entire duration of the build process. The pre-4.2 build process blocks all operations on the database and all its collections until the operation completed. 8 indexes do not take an exclusive lock.
Để biết thêm thông tin về hành vi khóa của 7, hãy xem chỉ mục xây dựng trên các bộ sưu tập đông dân cư. 7, see Index Builds on Populated Collections.Nếu bạn gọi 7 cho một chỉ mục đã tồn tại, MongoDB sẽ không tạo lại chỉ mục. 7 for an index that already exists, MongoDB does not recreate the index.Ngoại trừ tùy chọn đối chiếu, nếu bạn tạo một chỉ mục với một bộ tùy chọn chỉ mục và sau đó cố gắng tạo lại cùng một chỉ mục nhưng với các tùy chọn chỉ mục khác nhau, MongoDB sẽ không thay đổi các tùy chọn cũng như tái tạo chỉ mục.collation option, if you create an index with one set of index options and then try to recreate the same index but with different index options, MongoDB will not change the options nor recreate the index. Tùy chọn ẩn có thể được thay đổi mà không bỏ và tái tạo chỉ mục. Xem tùy chọn ẩn.Hidden Option. Để thay đổi các tùy chọn chỉ mục khác, hãy bỏ chỉ mục hiện có với 69 trước khi chạy 7 với các tùy chọn mới. 7 with the new options.Bạn có thể tạo nhiều chỉ mục trên cùng một khóa với các đối chiếu khác nhau. Để tạo các chỉ mục với cùng một mẫu chính nhưng các đối chiếu khác nhau, bạn phải cung cấp tên chỉ mục duy nhất. Mới trong phiên bản 4.4. Ghi chúĐể ẩn hoặc bỏ các chỉ mục hiện tại, bạn có thể sử dụng các phương thức 4 sau: 4 methods:
Ví dụ,
MẹoXem thêm:Đối với MongoDB 2.6 thông qua các phiên bản MongoDB với FeatureCompitionVersion (FCV) được đặt thành 9 hoặc sớm hơn, MongoDB sẽ không tạo chỉ mục trên một bộ sưu tập nếu mục nhập chỉ mục cho tài liệu hiện có vượt quá độ dài khóa chỉ số tối đa.not create an index on a collection if the index entry for an existing document exceeds the Maximum Index Key Length.Thay đổi trong phiên bản 4.4. Bắt đầu từ MongoDB 4.4, bạn có thể tạo các bộ sưu tập và chỉ mục bên trong giao dịch đa tài liệu nếu giao dịch không phải là giao dịch ghi chéo.not a cross-shard write transaction. Để sử dụng 7 trong một giao dịch, giao dịch phải sử dụng Read Mối quan tâm 82. Nếu bạn chỉ định mức độ quan tâm đọc khác với 82, giao dịch không thành công. 7 in a transaction, the transaction must use read concern 82. If you specify a read concern level other than
82, the transaction fails.MẹoXem thêm:Để lập chỉ mục một trường chứa một giá trị mảng, MongoDB sẽ tạo một khóa chỉ mục cho mỗi phần tử trong mảng. Các chỉ mục đa năng này hỗ trợ các truy vấn hiệu quả đối với các trường mảng. Các chỉ mục đa năng có thể được xây dựng trên các mảng chứa cả hai giá trị vô hướng [1] (ví dụ: chuỗi, số) và tài liệu lồng nhau. 4Ví dụ sau đây tạo ra một chỉ mục tăng dần trên trường 84. 86 creates a compound index.Nếu tài liệu 8 chỉ định nhiều hơn một trường, thì 86 sẽ tạo ra một chỉ số ghép. 5Ví dụ sau đây tạo ra một chỉ số hợp chất trên trường 84 (theo thứ tự tăng dần) và trường 88 (theo thứ tự giảm dần.)Thay đổi trong phiên bản 4.4: Bắt đầu từ MongoDB 4.4, các chỉ mục ghép có thể bao gồm một trường băm đơn. Các chỉ số băm hợp chất yêu cầu FeatureCompitionVersion được đặt thành 01. 6Ví dụ sau đây tạo ra một chỉ số hợp chất trên trường 90 (theo thứ tự tăng dần) và trường 88 (băm):MẹoVí dụ sau đây tạo ra một chỉ mục có tên 93. Ví dụ tạo ra chỉ mục với đối chiếu chỉ định địa phương 94 và cường độ so sánh 13:collation that specifies the locale 94 and comparison strength 13: 7Ví dụ sau đây tạo ra một chỉ số hợp chất có tên 96 với một sự đối chiếu. Bộ đối chiếu chỉ áp dụng cho các phím chỉ mục với các giá trị chuỗi.collation. The
collation applies only to the index keys with string values. 8Bộ đối chiếu áp dụng cho các khóa được lập chỉ mục có giá trị là chuỗi. Đối với các truy vấn hoặc hoạt động sắp xếp trên các khóa được lập chỉ mục sử dụng các quy tắc đối chiếu tương tự, MongoDB có thể sử dụng chỉ mục. Để biết chi tiết, xem đối chiếu và sử dụng chỉ mục.Collation and Index Use. Mới trong phiên bản 4.2. 2 featureCompitionVersion phải là 3 để tạo các chỉ mục ký tự đại diện. Để biết hướng dẫn về việc thiết lập FCV, hãy xem Phiên bản tương thích tính năng trên triển khai MongoDB 6.0.
Để biết tài liệu đầy đủ về các chỉ mục ký tự đại diện, xem các chỉ mục ký tự đại diện. Các ví dụ liệt kê sau đây về việc tạo chỉ số ký tự đại diện:
Hãy xem xét một bộ sưu tập 05 trong đó các tài liệu có thể chứa trường 06. Trường 06 có thể chứa các trường lồng nhau tùy ý, bao gồm các tài liệu và mảng nhúng: 0Hoạt động sau đây tạo ra một chỉ mục ký tự đại diện trên trường 06: 1Với chỉ số ký tự đại diện này, MongoDB chỉ số tất cả các giá trị vô hướng của 06. Nếu trường là một tài liệu hoặc mảng lồng nhau, chỉ số ký tự đại diện được đặt vào tài liệu/mảng và chỉ mục tất cả các trường vô hướng trong tài liệu/mảng.Chỉ số ký tự đại diện có thể hỗ trợ các truy vấn trường đơn tùy ý trên 06 hoặc một trong các trường lồng nhau của nó: 2Ghi chúCác chỉ số ký tự đại diện khác với và không tương thích với các chỉ mục văn bản ký tự đại diện. Các chỉ mục ký tự đại diện không thể hỗ trợ các truy vấn bằng toán tử 04.parameter documentation for more
information.Hãy xem xét một bộ sưu tập 05 trong đó các tài liệu có thể chứa trường 06. Trường 06 có thể chứa các trường lồng nhau tùy ý, bao gồm các tài liệu và mảng nhúng: 0Hoạt động sau đây tạo ra một chỉ mục ký tự đại diện trên trường 06: 4Với chỉ số ký tự đại diện này, MongoDB chỉ số tất cả các giá trị vô hướng của 06. Nếu trường là một tài liệu hoặc mảng lồng nhau, chỉ số ký tự đại diện được đặt vào tài liệu/mảng và chỉ mục tất cả các trường vô hướng trong tài liệu/mảng.Chỉ số ký tự đại diện có thể hỗ trợ các truy vấn trường đơn tùy ý trên 06 hoặc một trong các trường lồng nhau của nó: 5Ghi chúCác chỉ số ký tự đại diện khác với và không tương thích với các chỉ mục văn bản ký tự đại diện. Các chỉ mục ký tự đại diện không thể hỗ trợ các truy vấn bằng toán tử 04.parameter documentation for more information.Hãy xem xét một bộ sưu tập 05 trong đó các tài liệu có thể chứa trường 06. Trường 06 có thể chứa các trường lồng nhau tùy ý, bao gồm các tài liệu và mảng nhúng: 0Hoạt động sau đây tạo ra một chỉ mục ký tự đại diện trên trường 06: 7Với chỉ số ký tự đại diện này, MongoDB chỉ số tất cả các giá trị vô hướng của 06. Nếu trường là một tài liệu hoặc mảng lồng nhau, chỉ số ký tự đại diện được đặt vào tài liệu/mảng và chỉ mục tất cả các trường vô hướng trong tài liệu/mảng.Options for 28
indexes.Chỉ số ký tự đại diện có thể hỗ trợ các truy vấn trường đơn tùy ý trên 06 hoặc một trong các trường lồng nhau của nó:Cú pháp chỉ số ký tự đại diện cụ thể của đường dẫn không tương thích với tùy chọn 3. Xem tài liệu tham số để biết thêm thông tin. 8Ghi chúCác chỉ số ký tự đại diện khác với và không tương thích với các chỉ mục văn bản ký tự đại diện. Các chỉ mục ký tự đại diện không thể hỗ trợ các truy vấn bằng toán tử 04.parameter documentation.Hãy xem xét một bộ sưu tập 05 trong đó các tài liệu có thể chứa trường 06. Trường 06 có thể chứa các trường lồng nhau tùy ý, bao gồm các tài liệu và mảng nhúng: 0Hoạt động sau tạo chỉ mục ký tự đại diện và sử dụng tài liệu 3 để lập chỉ mục tất cả các trường vô hướng cho mỗi tài liệu trong bộ sưu tập, không bao gồm các trường 23 và 24: 0Trong khi mẫu chính 9 bao gồm tất cả các trường trong tài liệu, trường 3 không bao gồm các trường được chỉ định từ chỉ mục. Để biết tài liệu đầy đủ trên 3, hãy xem các tùy chọn cho các chỉ mục 28.Options for 28 indexes.Nếu một trường là một tài liệu hoặc mảng lồng nhau, chỉ số ký tự đại diện được đặt vào tài liệu/mảng và chỉ mục tất cả các trường vô hướng trong tài liệu/mảng. Chỉ mục được tạo có thể hỗ trợ các truy vấn trên bất kỳ trường vô hướng nào ngoại trừ các truy cập được loại trừ bởi 3:except those excluded by 3: 1Ghi chúCác chỉ mục ký tự đại diện không hỗ trợ các câu lệnh bao gồm và loại trừ trong tài liệu 3 trừ khi rõ ràng bao gồm cả trường 4. Để biết thêm thông tin về 3, hãy xem tài liệu tham số.parameter documentation.Ghi chúCác chỉ mục ký tự đại diện không hỗ trợ các câu lệnh bao gồm và loại trừ trong tài liệu db.myColl.createIndex( { category: 1 }, { collation: { locale: "fr" } } )3 trừ khi rõ ràng bao gồm cả trường db.myColl.createIndex( { category: 1 }, { collation: { locale: "fr" } } )4. Để biết thêm thông tin về db.myColl.createIndex( { category: 1 }, { collation: { locale: "fr" } } )3, hãy xem tài liệu tham số.Yêu cầu FeatureCompitionVersion 4.4+ Mỗi 2 trong tập hợp bản sao hoặc cụm bị che chắn phải có FeatureCompitionVersion được đặt thành ít nhất 01 để bắt đầu xây dựng chỉ số đồng thời trên các thành viên tập hợp bản sao.MongoDB 4.4 Chạy 49 xây dựng các chỉ mục trên chính trước khi sao chép chỉ số xây dựng thành các trường thứ hai.Bắt đầu với MongoDB 4.4, chỉ mục xây dựng trên một bộ bản sao hoặc cụm được xây dựng đồng thời trên tất cả các thành viên bộ bản sao mang dữ liệu. Đối với các cụm mảnh vỡ, bản dựng chỉ mục chỉ xảy ra trên các mảnh vỡ chứa dữ liệu cho bộ sưu tập được lập chỉ mục. Chính yêu cầu số lượng thành viên 50 chịu dữ liệu tối thiểu (tức là đại biểu cam kết), bao gồm chính nó, phải hoàn thành bản dựng trước khi đánh dấu chỉ mục là sẵn sàng để sử dụng. Xem chỉ mục xây dựng trong môi trường nhân rộng để biết thêm thông tin.commitQuorum parameter to the 86 operation to set the minimum number of data-bearing voting members (i.e commit quorum), including the primary, which must complete
the index build before the primary marks the indexes as ready. The default commit quorum is 52, or all data-bearing voting replica set members.Chỉ định tham số cam kết cho hoạt động 86 để đặt số lượng thành viên bỏ phiếu chịu dữ liệu tối thiểu (tức là đại biểu cam kết), bao gồm cả chính, phải hoàn thành bản dựng chỉ mục trước khi đánh dấu các chỉ mục là sẵn sàng. Quorum cam kết mặc định là 52 hoặc tất cả các thành viên đặt bản sao biểu quyết mang dữ liệu.commit quorum of 9, or a simple majority of data-bearing voting members: 2Hoạt động sau đây tạo ra một chỉ mục với đại biểu cam kết là 9 hoặc phần lớn các thành viên bỏ phiếu chịu dữ liệu:
Làm thế nào để bạn tạo một chỉ mục trên một cột trong MongoDB?Các chỉ mục có thể được tạo bằng cách sử dụng phương thức createdIndex. Các chỉ mục có thể được tạo trên chỉ một trường hoặc nhiều giá trị trường. Các chỉ mục có thể được tìm thấy bằng cách sử dụng phương thức GetIndexes. Các chỉ mục có thể được loại bỏ bằng cách sử dụng Dropindex cho các chỉ mục đơn hoặc các Dropindex để giảm tất cả các chỉ mục.by using the createIndex method. Indexes can be created on just one field or multiple field values. Indexes can be found by using the getIndexes method. Indexes can be removed by using the dropIndex for single indexes or dropIndexes for dropping all indexes.
Chúng ta có thể tạo chỉ mục trong MongoDB không?Các chỉ mục được đặt hàng theo giá trị của trường được chỉ định trong chỉ mục. Vì vậy, MongoDB cung cấp một phương thức createdIndex () để tạo một hoặc nhiều chỉ mục trên các bộ sưu tập. Sử dụng phương pháp này, chúng ta có thể tạo các loại chỉ mục khác nhau như chỉ mục văn bản, chỉ mục 2DSPHERE, chỉ mục 2D, v.v.MongoDB provides a createIndex() method to create one or more indexes on collections. Using this method we can create different types of indexes like text index, 2dsphere index, 2d index, etc.
Làm thế nào để bạn tạo một chỉ mục trường duy nhất?Trong khung điều hướng, nhấp chuột phải vào tên của bảng mà bạn muốn tạo chỉ mục vào, sau đó nhấp vào chế độ xem thiết kế trên menu phím tắt.Nhấp vào tên trường cho trường mà bạn muốn lập chỉ mục.
Bạn có thể tạo một chỉ mục trong một trường mảng trong MongoDB không?Để lập chỉ mục một trường chứa một giá trị mảng, MongoDB sẽ tạo một khóa chỉ mục cho mỗi phần tử trong mảng.Các chỉ mục đa năng này hỗ trợ các truy vấn hiệu quả đối với các trường mảng.Các chỉ mục đa năng có thể được xây dựng trên các mảng chứa cả hai giá trị vô hướng [1] (ví dụ: chuỗi, số) và tài liệu lồng nhau.MongoDB creates an index key for each element in the array. These multikey indexes support efficient queries against array fields. Multikey indexes can be constructed over arrays that hold both scalar values [1] (e.g. strings, numbers) and nested documents. |