Đối chiếu khi nâng cấp từ phiên bản MongoDB cũ hơn (3. 2. x)
Nếu bạn nâng cấp từ phiên bản MongoDB cũ hơn (E. g. 3. 2. x), các chỉ mục hiện tại sẽ không hỗ trợ Đối chiếu. Để thiết lập và chạy Collation, bước đầu tiên của bạn là đảm bảo tất cả các tính năng mới của 3. 4. x được bật
db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )
Nâng cấp phiên bản #MongoDB để tạo các chỉ mục phân biệt chữ hoa chữ thường bằng cách sử dụng Đối chiếuNhấp để TweetThông tin thêm về sự không tương thích được cung cấp trong MongoDB 3. ghi chú phát hành x. Xin lưu ý rằng khi bạn thực hiện các bước này, sẽ khó hạ cấp xuống 3 hơn. 2. Bước tiếp theo của chúng tôi là kiểm tra phiên bản chỉ mục của bạn
Khi bạn đã nâng cấp lên 3. 4, bạn có thể tạo các chỉ mục mới bằng cách làm theo các bước chúng tôi đã nêu trước đó. Nếu bạn đang xây dựng một chỉ mục lớn, vui lòng sử dụng công việc xây dựng chỉ mục cuộn ScaleGrid để thêm các chỉ mục của bạn
Các chỉ mục trong cơ sở dữ liệu khá giống với các chỉ mục chúng ta thấy ở phía trước mỗi cuốn sách. Một chỉ mục trong cơ sở dữ liệu được sử dụng để thực hiện Tìm kiếm hoặc Chọn bất kỳ dữ liệu nào từ cơ sở dữ liệu nhanh hơn
Ví dụ: nếu bạn muốn tìm kiếm một chủ đề cụ thể trong một cuốn sách, bạn có thể tham khảo bảng mục lục, chỉ định từng chủ đề theo thứ tự bảng chữ cái và chuyển trực tiếp đến trang hoặc các trang có chủ đề đó
Các chỉ mục trong MongoDB có thể được gọi là một tập hợp dữ liệu đặc biệt chứa thông tin đủ điều kiện hoặc giới hạn liên quan đến bất kỳ cột dữ liệu cụ thể nào. Vì dữ liệu được lưu trữ trong Chỉ mục là một phần, nên việc đọc dữ liệu sẽ dễ dàng hơn và thực hiện truy vấn nhanh hơn. với việc sử dụng các Chỉ mục, các hoạt động thực thi trở nên dễ dàng hơn trong MongoDB
Nếu bạn muốn làm phong phú thêm sự nghiệp của mình và trở thành một chuyên gia về MongoDB, hãy truy cập Mindmajix - một nền tảng đào tạo trực tuyến toàn cầu. "Đào tạo MongoDB" Khóa học này sẽ giúp bạn đạt được thành tích xuất sắc trong lĩnh vực này
Các chỉ mục trong MongoDB có thể được tạo dễ dàng và không ảnh hưởng đến dữ liệu. Nó cũng có thể là duy nhất giúp ngăn chặn các mục trùng lặp trong bảng chỉ mục. Bây giờ, hãy cùng tìm hiểu chi tiết về công nghệ tiên tiến này và việc sử dụng nó trong môi trường CNTT hiện tại.
MongoDB Tạo Chỉ mục - Mục lục
Tầm quan trọng của các chỉ số
Trong khi truy cập bất kỳ dữ liệu nào, các chuyên gia CNTT thường tìm kiếm và khai thác dữ liệu từ cơ sở dữ liệu bằng cách quét tuần tự i. e. tìm kiếm từng dữ liệu cụ thể đó từ toàn bộ cơ sở dữ liệu trước khi trả về kết quả
- Có bảng chỉ mục trong cơ sở dữ liệu giúp người dùng thực hiện truy vấn nhanh hơn
- Sử dụng index với Unique key còn giúp người dùng tránh truy xuất dữ liệu trùng lặp
Tuy nhiên, Chỉ mục có thể làm chậm bất kỳ truy vấn nào bằng câu lệnh Cập nhật hoặc Chèn
Tầm quan trọng chính của Lập chỉ mục là giảm thiểu thời gian và thực hiện bất kỳ truy vấn nào nhanh hơn bằng cách giảm số lượng bảng hoặc cột cần kiểm tra. Mặc dù việc tạo chỉ mục hoàn toàn phụ thuộc vào người dùng, nhưng nên lập chỉ mục cho khóa chính.
[Bài viết liên quan. Sự khác biệt giữa Cassandra và MongoDB]
Tác động của các chỉ số
Cũng giống như bất kỳ công nghệ nào khác, hay có thể nói là phương pháp luận, Chỉ mục cũng có tác động đến kiến trúc làm việc hiện tại. Chúng ta hãy xem các Chỉ mục có thể tạo ra tác động như thế nào đối với CNTT hiện tại
- Các chỉ mục có thể được xác định chỉ cho một trường từ bộ sưu tập hoặc có thể dựa trên nhiều trường từ bộ sưu tập
- Các điểm đã đề cập ở trên liên quan đến Chỉ mục đã được thiết lập tốt hơn là nên có Chỉ mục trong bất kỳ truy vấn nào trong cơ sở dữ liệu. Tuy nhiên, việc tạo nhiều chỉ mục hơn trong bất kỳ cơ sở dữ liệu nào có thể làm chậm hoạt động
- Các thao tác như Cập nhật hoặc chèn câu lệnh cần truy cập cơ sở dữ liệu để thực hiện thay đổi trong bất kỳ cột hoặc hàng nào. Các chỉ mục cũng cần được cập nhật mọi lúc, điều này dẫn đến sự suy giảm hiệu suất thực thi đối với bất kỳ truy vấn nào.
- Việc thêm Chỉ mục vào cơ sở dữ liệu có thể ảnh hưởng trực tiếp đến hiệu suất ghi hoặc cập nhật trong bất kỳ cơ sở dữ liệu nào.
Ngoài ra, chúng tôi cũng đang giới thiệu một ví dụ ở đây, đại diện cho hoạt động của một Chỉ mục. Ví dụ bao gồm hai chỉ mục, được sử dụng trong bộ sưu tập i. e. "Mã hiệu công nhân. 1” và “Mã nhân viên. AA”
Bây giờ, khi một truy vấn tìm kiếm được thực hiện, các chỉ mục sẽ ngay lập tức được thực hiện và kết quả là trả về tệp cụ thể từ bộ sưu tập. Vui lòng xem nhiều chỉ mục sau trong ví dụ được đề cập bên dưới
Ví dụ chỉ đơn giản cho thấy rằng nếu bất kỳ truy vấn nào được liên kết với một trong hai chỉ mục, nó sẽ trả về tài liệu đó. Tuy nhiên, có nhiều chỉ mục có thể làm giảm hiệu suất
Nếu bất kỳ truy vấn nào chứa thao tác cập nhật hoặc Chèn, nó sẽ làm chậm quá trình thực hiện truy vấn
Làm thế nào để tạo chỉ mục?
Cũng giống như bất kỳ phương pháp kỹ thuật số nào khác, MongoDB cũng có một số tập lệnh và cú pháp được xác định trước, cần được truy cập để thực hiện các thao tác mong muốn. Để tạo Chỉ mục, phương thức “createIndex” được sử dụng trong MongoDB. Cú pháp tạo chỉ mục
db.collection.createIndex (keys, options)
Để làm cho nó hoàn toàn dễ hiểu, hãy lấy một ví dụ giải thích cách tạo Chỉ mục trong MongoDB. Giả sử chúng ta có một bộ sưu tập trong cơ sở dữ liệu chứa “Employeeid” và EmployeeName” làm tên trường
db.Employee.createIndex({Employeeid:1])
Ở đây, phương thức createIndex được sử dụng để tạo Index “Employeeid”. Tham số 'Employeeid' được sử dụng để biểu thị ràng buộc hoặc trường mà chỉ mục của chúng tôi dựa trên đó. Tham số '1' chỉ ra rằng các giá trị trường của employeeid được sắp xếp theo thứ tự tăng dần
Đầu ra sau đây sẽ là.
Ví dụ nêu trên mô tả cách tạo Chỉ mục trong MongoDB. Điều này cũng cho thấy chỉ mục được tạo chỉ dựa trên một giá trị trường. Tuy nhiên, như đã nêu ở trên, chúng ta cũng có thể tạo một chỉ mục dựa trên nhiều giá trị trường
________số 8Ở đây, trong mã này, chúng ta có thể thấy rằng chỉ mục dựa trên hai giá trị trường i. e. Mã hiệu công nhân. 1 và Tên nhân viên. 1 trong đó 1 biểu thị thứ tự tăng dần
Sự định nghĩa
Tham số là một tập hợp các trường hoặc cột xác định điều kiện cho hoạt động của bất kỳ truy vấn nào. Tạo một Chỉ mục trong MongoDB yêu cầu các tham số. Các tham số thông báo truy vấn về giá trị trường mà chỉ mục phải được tạo và cách nó được sử dụng
Một tài liệu chứa các trường dưới dạng khóa chỉ mục và giá trị cho biết thứ tự của khóa chỉ mục đó.
Giá trị '1' đề cập đến thứ tự tăng dần trên một trường trong khi giá trị '-1' đề cập đến thứ tự giảm dần
Các chỉ mục trong MongoDB có thể là số, văn bản, được băm (ví dụ:. _id) và không gian địa lý (ví dụ:. 2dsphere)
Không bắt buộc. Một tập hợp các tùy chọn chỉ định hoặc kiểm soát việc tạo bất kỳ chỉ mục nào. Đây là tùy chọn và có thể được sử dụng theo yêu cầu
Tùy chọn
Tài liệu tùy chọn bao gồm một nhóm các tùy chọn xác định hoặc kiểm soát việc thiết lập bất kỳ chỉ mục nào. Đây là tùy chọn và có thể được sử dụng theo yêu cầu
Tùy chọn cho tất cả các loại chỉ mục
Mặc dù Tùy chọn cho các chỉ mục được đề cập dưới đây là tùy chọn, chúng có thể được sử dụng với tất cả các chỉ mục trừ khi loại chỉ mục đã được chỉ định
Nền, như tên gợi ý, làm nền cho chỉ mục để đảm bảo rằng hoạt động không có bất kỳ ảnh hưởng nào đến các hoạt động khác của cơ sở dữ liệu. Tuy nhiên, người ta cần chỉ định giá trị là true để đặt nó ở chế độ nền. Giá trị mặc định là sai
Tùy chọn duy nhất giúp tạo một chỉ mục duy nhất. Nó sẽ giúp giảm thiểu thời gian khi thực hiện thao tác chèn, cập nhật văn bản. Nó từ chối các hoạt động ở bất cứ nơi nào giá trị hiện có và giá trị khóa chỉ mục trong chỉ mục giống nhau
để tạo một chỉ mục duy nhất, bạn cần chỉ định giá trị là đúng vì giá trị mặc định là sai
Tùy chọn này là mới trong MongoDB phiên bản 3. 2. Nó cũng được ưa thích hơn tùy chọn thưa thớt. Sử dụng bộ lọc giúp chỉ mục chỉ tham chiếu đến những tài liệu nằm dưới hoặc khớp với biểu thức bộ lọc
Tùy chọn này tương tự như partialFilterExpression. Chỉ mục Sparse chỉ đề cập đến những tài liệu xác định điều kiện. Ít không gian hơn được tiêu thụ bởi các chỉ mục này. Chúng cũng phản ứng khác nhau với các truy vấn trong một số tình huống (đặc biệt là khi sắp xếp)
Chỉ định một giá trị TTL (thời gian tồn tại) ở dạng số, để biểu thị giây, để kiểm soát lượng thời gian MongoDB cần để giữ tài liệu trong bộ sưu tập này. Mặc dù tùy chọn này chỉ có thể được sử dụng với các chỉ mục Thời gian tồn tại
Tùy chọn này cho phép người dùng tối ưu hóa công cụ lưu trữ trên cơ sở mỗi chỉ mục khi tạo chỉ mục
Tùy chọn công cụ lưu trữ sẽ có dạng sau
Công cụ lưu trữ. {. }
Tùy chọn này được chỉ định khi việc tạo chỉ mục được xác thực và ghi vào oplog (OperationLog. lưu giữ bản ghi mọi sửa đổi được thực hiện trên dữ liệu) trong quá trình sao chép để hỗ trợ các bộ sao chép với các thành viên sử dụng các công cụ lưu trữ khác nhau
Tùy chọn đối chiếu
Tùy chọn đối chiếu trong MongoDB được giới thiệu trong phiên bản 3. 4. Do đó nó không hỗ trợ MongoDB 3. 2 hoặc phiên bản cũ hơn
Đối chiếu trong MongoDB 3. 4 đi kèm với một bộ quy tắc được sử dụng để so sánh các chuỗi được xác định bằng một ngôn ngữ cụ thể. Nếu không có ngôn ngữ nào được chỉ định thì các chuỗi được sắp xếp dựa trên sự khác biệt nhị phân
Cú pháp đối chiếu như sau
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
Ngoài trường Ngôn ngữ, tất cả các trường còn lại là tùy chọn. Trường ngôn ngữ là bắt buộc và cần được điền thông tin xác thực. Các chỉ mục không hỗ trợ Collation là. Chỉ mục văn bản, Chỉ mục 2d và Chỉ mục geoHaystach
Đối chiếu và sử dụng chỉ mục
Trong MongoDB, một chỉ mục chỉ cho phép một đối chiếu. Tuy nhiên, nếu bạn cần chỉ định nhiều đối chiếu, bạn cần tạo nhiều chỉ mục. Nếu thao tác xác định đối chiếu khác với các trường được lập chỉ mục thì truy vấn không thể thực hiện so sánh chuỗi vì chỉ mục có đối chiếu sẽ không hỗ trợ nó
Do đó, để so sánh các chuỗi sử dụng chỉ mục, chúng ta cũng phải khởi tạo đối chiếu tương tự
Hãy hiểu điều này với một ví dụ
>db.createCollection("test2", { collation: { locale: 'en_US', strength: 2 } } );
>db.getCollectionInfos({name: 'test2'})
[
{
"name" : "test2",
"type" : "collection",
"options" : {
"collation" : {
"locale" : "en_US",
"caseLevel" : false,
"caseFirst" : "off",
"strength" : 2,
"numericOrdering" : false,
"alternate" : "non-ignorable",
"maxVariable" : "punct",
"normalization" : false,
"backwards" : false,
"version" : "57.1"
}
},
"info" : {
"readOnly" : false
},
"idIndex" : {
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "test.test2",
"collation" : {
"locale" : "en_US",
"caseLevel" : false,
"caseFirst" : "off",
"strength" : 2,
"numericOrdering" : false,
"alternate" : "non-ignorable",
"maxVariable" : "punct",
"normalization" : false,
"backwards" : false,
"version" : "57.1"
}
}
}
]
0Đối chiếu của cột bên dưới được sử dụng bởi chỉ mục một cách mù quáng.
>db.createCollection("test2", { collation: { locale: 'en_US', strength: 2 } } );
>db.getCollectionInfos({name: 'test2'})
[
{
"name" : "test2",
"type" : "collection",
"options" : {
"collation" : {
"locale" : "en_US",
"caseLevel" : false,
"caseFirst" : "off",
"strength" : 2,
"numericOrdering" : false,
"alternate" : "non-ignorable",
"maxVariable" : "punct",
"normalization" : false,
"backwards" : false,
"version" : "57.1"
}
},
"info" : {
"readOnly" : false
},
"idIndex" : {
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "test.test2",
"collation" : {
"locale" : "en_US",
"caseLevel" : false,
"caseFirst" : "off",
"strength" : 2,
"numericOrdering" : false,
"alternate" : "non-ignorable",
"maxVariable" : "punct",
"normalization" : false,
"backwards" : false,
"version" : "57.1"
}
}
}
]
1Chỉ mục có thể được truy cập bằng một truy vấn dưới mọi hình thức, vì đối chiếu của cột sẽ được sử dụng theo mặc định để so sánh các chuỗi. Tuy nhiên, nếu các truy vấn chứa một số đối chiếu được chỉ định khác thì chỉ mục này không thể tăng tốc các truy vấn. Ví dụ,
>db.createCollection("test2", { collation: { locale: 'en_US', strength: 2 } } );
>db.getCollectionInfos({name: 'test2'})
[
{
"name" : "test2",
"type" : "collection",
"options" : {
"collation" : {
"locale" : "en_US",
"caseLevel" : false,
"caseFirst" : "off",
"strength" : 2,
"numericOrdering" : false,
"alternate" : "non-ignorable",
"maxVariable" : "punct",
"normalization" : false,
"backwards" : false,
"version" : "57.1"
}
},
"info" : {
"readOnly" : false
},
"idIndex" : {
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "test.test2",
"collation" : {
"locale" : "en_US",
"caseLevel" : false,
"caseFirst" : "off",
"strength" : 2,
"numericOrdering" : false,
"alternate" : "non-ignorable",
"maxVariable" : "punct",
"normalization" : false,
"backwards" : false,
"version" : "57.1"
}
}
}
]
2Ở đây chúng ta có thể tạo một chỉ mục mới hỗ trợ đối chiếu 'y' như thế này
>db.createCollection("test2", { collation: { locale: 'en_US', strength: 2 } } );
>db.getCollectionInfos({name: 'test2'})
[
{
"name" : "test2",
"type" : "collection",
"options" : {
"collation" : {
"locale" : "en_US",
"caseLevel" : false,
"caseFirst" : "off",
"strength" : 2,
"numericOrdering" : false,
"alternate" : "non-ignorable",
"maxVariable" : "punct",
"normalization" : false,
"backwards" : false,
"version" : "57.1"
}
},
"info" : {
"readOnly" : false
},
"idIndex" : {
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "test.test2",
"collation" : {
"locale" : "en_US",
"caseLevel" : false,
"caseFirst" : "off",
"strength" : 2,
"numericOrdering" : false,
"alternate" : "non-ignorable",
"maxVariable" : "punct",
"normalization" : false,
"backwards" : false,
"version" : "57.1"
}
}
}
]
3Tùy chọn cho chỉ mục văn bản
Các tùy chọn chỉ khả dụng cho trường văn bản Các chỉ mục được gắn nhãn là các tùy chọn cho các chỉ mục văn bản
Tham sốTypeMô tảtrọng sốtài liệuTùy chọn. Trọng số bao gồm các giá trị số nguyên có phạm vi từ 1 đến 99.999 và thể hiện tầm quan trọng của trường đối với các chỉ mục khác dưới dạng điểm số. Bạn có thể khai báo trọng số cho một số hoặc tất cả các trường được lập chỉ mục. 1 là giá trị mặc định. default_languagestringTùy chọn. Đối với các chỉ mục văn bản, ngôn ngữ kiểm soát danh sách các từ. Nó xây dựng các quy tắc cho trình gốc và mã thông báo. Xem Ngôn ngữ tìm kiếm văn bản để biết các ngôn ngữ có sẵn và nêu Ngôn ngữ cho Chỉ mục văn bản. Giá trị mặc định là tiếng Anh. language_overridestringTùy chọn. Đối với các chỉ mục văn bản, tên của trường, trong tài liệu của bộ sưu tập, chứa ngôn ngữ ghi đè cho tài liệu. Giá trị mặc định là ngôn ngữ. văn bảnChỉ mụcPhiên bảnsố nguyênTùy chọn. Số phiên bản chỉ mục văn bản được sử dụng để ghi đè số phiên bản mặc địnhTùy chọn cho Chỉ mục 2dsphere
Các chỉ mục 2dsphere có một tùy chọn cụ thể dựa trên yêu cầu của người dùng. Các chỉ mục 2dsphere được sử dụng trong các truy vấn để có được hình học trên hình cầu giống như trái đất. Cho dù đó là giao lộ, bao hàm hay lân cận, 2dsphere đều hỗ trợ tất cả các truy vấn không gian địa lý của MongoDB
cú pháp
>db.createCollection("test2", { collation: { locale: 'en_US', strength: 2 } } );
>db.getCollectionInfos({name: 'test2'})
[
{
"name" : "test2",
"type" : "collection",
"options" : {
"collation" : {
"locale" : "en_US",
"caseLevel" : false,
"caseFirst" : "off",
"strength" : 2,
"numericOrdering" : false,
"alternate" : "non-ignorable",
"maxVariable" : "punct",
"normalization" : false,
"backwards" : false,
"version" : "57.1"
}
},
"info" : {
"readOnly" : false
},
"idIndex" : {
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "test.test2",
"collation" : {
"locale" : "en_US",
"caseLevel" : false,
"caseFirst" : "off",
"strength" : 2,
"numericOrdering" : false,
"alternate" : "non-ignorable",
"maxVariable" : "punct",
"normalization" : false,
"backwards" : false,
"version" : "57.1"
}
}
}
]
4ParameterTypeDescription2dsphereIndexVersionintegerKhông bắt buộc. 2dsphereIndexVersion, bạn có thể sử dụng tùy chọn này để chỉ định hoặc ghi đè số phiên bản mặc định
MongoDB 3. 2 trở lên phiên bản này có phiên bản 3 làm mặc định 2dsphereIndexVersion
MongoDB 2. 6 và lên đến 3. 0 có phiên bản 2 làm mặc định 2dsphereIndexVersion
Tùy chọn cho chỉ mục 2d
Các chỉ mục 2d được sử dụng cho dữ liệu được lưu trữ trong mặt phẳng hai chiều. Với nhiều chỉ mục 2d trong một bộ sưu tập, một tùy chọn chính phải được chỉ định để chúng tôi có thể sử dụng đường dẫn trường được lập chỉ mục
[Bài viết liên quan. Hiển thị Bộ sưu tập trong MongoDB]
Các tùy chọn cho Chỉ mục 2d là
Tham sốTypeMô tảbitsintegerKhông bắt buộc. Đối với các chỉ mục 2d, tùy chọn bit lưu trữ giá trị geohash của dữ liệu vị trí
Giá trị bit nằm trong khoảng từ 1 đến 32. Tuy nhiên, nó có giá trị mặc định là 26
số tối thiểuTùy chọn. Đối với các chỉ mục 2d, tùy chọn tối thiểu được sử dụng để lưu trữ giá trị nhỏ hơn hoặc bằng với các giá trị kinh độ và vĩ độ. nó có giá trị mặc định là -180. 0. số tối đaTùy chọn. Đối với các chỉ mục 2d, tùy chọn tối đa được sử dụng để lưu trữ giá trị bằng hoặc nhiều hơn cho các giá trị kinh độ và vĩ độ. nó có giá trị mặc định là 180. 0Các tùy chọn cho chỉ mục geoHaystack
Chỉ mục geoHaystack được tối ưu hóa theo cách giúp trả về kết quả trên các khu vực nhỏ
Các tùy chọn cho geoHayastack là
Tham sốTypeDescriptionbucketSizenumberTrong các chỉ mục geoHaystack, tùy chọn kích thước nhóm được sử dụng để nhóm hoặc ghép các giá trị vị trí đó trong cùng một nhóm có số lượng đơn vị đã chỉ định. Tuy nhiên, điều quan trọng cần lưu ý là giá trị phải luôn lớn hơn 0Hành vi cư xử
Hành vi của phương thức createIndex() được đề cập bên dưới
- Để cập nhật hoặc chèn các tùy chọn chỉ mục mới ngoài đối chiếu, bạn phải loại bỏ chỉ mục bằng phương thức dropIndex(). Sau đó, bạn phải tạo một chỉ mục mới bằng sự trợ giúp của phương thức createIndex() chỉ định các tùy chọn mới
- Tạo một chỉ mục mới với các tùy chọn khác nhau trong khi có một chỉ mục hiện có của các trường chỉ mục giống nhau, nó sẽ tạo ra xung đột trong các chỉ mục. Do đó db. thu thập. createIndex() không thể sửa đổi chỉ mục hiện có ngay cả khi các tùy chọn khác nhau
- Tuy nhiên, đối chiếu cho phép nhiều chỉ mục có cùng khóa miễn là các đối chiếu khác nhau. Để tạo loại chỉ mục này tôi. e. cùng tên khóa nhưng đối chiếu khác nhau, bạn phải cung cấp tên duy nhất cho các chỉ mục.
- Tạo các chỉ mục giống nhau với các tùy chọn giống nhau sẽ không ảnh hưởng đến quá trình. Như thể thực hành này được thực hiện, nó sẽ chỉ thực hiện thao tác đầu tiên và tất cả các thao tác khác sẽ không có bất kỳ ảnh hưởng nào
- Chỉ mục cho một tài liệu hiện có không được vượt quá độ dài khóa tối đa của chỉ mục nếu không MongoDB sẽ không tạo chỉ mục. Các phiên bản trước 3. 2 sẽ cho phép hoạt động này tôi. e. để tạo chỉ mục tuy nhiên nó sẽ không lập chỉ mục cho các tài liệu đó
ví dụ
Tạo một chỉ mục tăng dần trên một trường đơn
Để tạo một chỉ mục có thứ tự tăng dần, giá trị 1 phải được chỉ định với trường khóa
[Bài viết liên quan. Sự khác biệt giữa MongoDB và CouchDB]
Ví dụ. Hãy xem xét bộ sưu tập sau
>db.createCollection("test2", { collation: { locale: 'en_US', strength: 2 } } );
>db.getCollectionInfos({name: 'test2'})
[
{
"name" : "test2",
"type" : "collection",
"options" : {
"collation" : {
"locale" : "en_US",
"caseLevel" : false,
"caseFirst" : "off",
"strength" : 2,
"numericOrdering" : false,
"alternate" : "non-ignorable",
"maxVariable" : "punct",
"normalization" : false,
"backwards" : false,
"version" : "57.1"
}
},
"info" : {
"readOnly" : false
},
"idIndex" : {
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "test.test2",
"collation" : {
"locale" : "en_US",
"caseLevel" : false,
"caseFirst" : "off",
"strength" : 2,
"numericOrdering" : false,
"alternate" : "non-ignorable",
"maxVariable" : "punct",
"normalization" : false,
"backwards" : false,
"version" : "57.1"
}
}
}
]
5Bây giờ để sắp xếp chỉ mục theo thứ tự tăng dần
db.Employee.createIndex({Employeeid:1])
0Ví dụ sau tạo một chỉ mục tăng dần trên trường điểm
Tạo một chỉ mục trên nhiều trường
Chỉ mục tổng hợp hoặc chỉ mục có nhiều trường có thể được tạo bằng cú pháp được đề cập bên dưới
db.Employee.createIndex({Employeeid:1])
1Trong nhiều chỉ mục trường, thứ tự sắp xếp của chỉ mục đóng một vai trò quan trọng. Nó xác định xem chỉ mục có thể hỗ trợ thứ tự sắp xếp hay không. Ví dụ sau tạo một chỉ mục phức hợp trên trường orderDate (theo thứ tự tăng dần) và trường pincode (theo thứ tự giảm dần. )
db.Employee.createIndex({Employeeid:1])
2Chỉ mục tổng hợp không thể bao gồm thành phần chỉ mục được băm
Tạo chỉ mục với đối chiếu được chỉ định
Hoạt động này đã được thêm vào trong phiên bản 3. 4
Đối chiếu là một tùy chọn cho phép người dùng chỉ định các quy tắc trên cơ sở một ngôn ngữ cụ thể để so sánh giữa các chuỗi, chẳng hạn như các quy tắc về chữ cái viết thường và dấu trọng âm
cú pháp
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
Cùng xem ví dụ để hiểu hơn
db.Employee.createIndex({Employeeid:1])
4Ở đây trong tập lệnh ví dụ nêu trên, thuộc tính strength về cơ bản biểu thị mức độ so sánh của các chuỗi. Sau đó, bạn có thể nhận được trường hợp không phân biệt chữ hoa chữ thường với truy vấn này
db.Employee.createIndex({Employeeid:1])
5Ở đây, chúng tôi tạo một chỉ mục có tên là 'tên'. Chỉ mục được tạo với đối chiếu biểu thị cường độ so sánh 2 và ngôn ngữ 'en'
Đối chiếu trong các chỉ mục có một mức độ so sánh được liệt kê là
- Cấp tiểu học. Ở cấp độ này, thao tác đối chiếu chỉ thực hiện so sánh trên cơ sở các ký tự trong khi bỏ qua sự khác biệt về chữ hoa chữ thường hoặc dấu phụ (khi được viết bên trên hoặc bên dưới một chữ cái sẽ tạo ra sự khác biệt trong cách phát âm)
- Cấp trung học. Cấp độ so sánh thứ cấp thực hiện thao tác trên dấu i. e. nó thực hiện so sánh giữa sự khác biệt chính và dấu phụ. Tuy nhiên, sự khác biệt cơ bản được ưu tiên hơn sự khác biệt thứ cấp
- Bậc đại học. Đối chiếu cấp ba thực hiện so sánh trên trường hợp hoặc các biến thể chữ i. e. nó là sự so sánh giữa sự khác biệt cơ bản, dấu phụ và các biến thể trường hợp hoặc chữ cái (cấp ba). Đây là mức mặc định
- đòn bẩy bậc bốn. Mức độ khác biệt thứ tư thực hiện so sánh đối với một số trường hợp hạn chế về chữ cái cụ thể như văn bản tiếng Nhật
- cấp độ giống hệt nhau. Đó là một loại tiebreak và khá hạn chế
Tuy nhiên, phép đối chiếu chỉ có thể được áp dụng cho các trường chứa giá trị chuỗi
[Bài viết liên quan. Ví dụ về MongoDB]
Cách tìm chỉ mục
Nếu chúng ta muốn tìm một Index trong MongoDB, chúng ta sử dụng phương thức getIndex() trong MongoDB.
Hãy hiểu điều này với ví dụ sau
db.Employee.createIndex({Employeeid:1])
6người dùng cần thực hiện lệnh này và nếu thao tác thực hiện thành công, đầu ra sẽ như trong hình
Đầu ra sau đây trả về kết quả của lệnh getIndex(). Như chúng ta có thể thấy trong cửa sổ đầu ra, có hai chỉ mục được tạo trong bộ sưu tập sau
Một là trường ‘_id’ và một là trường ‘Employeeid’. Giá trị '1' chỉ định rằng các chỉ mục được tạo theo thứ tự tăng dần.
Cách bỏ chỉ mục
Để xóa bất kỳ chỉ mục đã chỉ định nào khỏi bộ sưu tập, chúng ta cần sử dụng phương thức dropindex().
cú pháp
db.Employee.createIndex({Employeeid:1])
7Phương thức dropIndex() sử dụng tham số sau
để loại bỏ bất kỳ chỉ mục nào, tham số Chỉ mục được sử dụng để chỉ định chỉ mục nào người dùng cần loại bỏ
Nếu không được sử dụng, tất cả các chỉ mục từ bộ sưu tập sẽ bị xóa trừ chỉ mục '_'
Để bỏ chỉ mục văn bản, hãy chỉ định tên chỉ mục
Để lấy tên của các chỉ mục, trước tiên chúng ta có thể sử dụng phương thức getIndex(). Sau đó, chúng ta có thể xóa trường cụ thể của chỉ mục bằng phương thức dropIndex()
Ví dụ: nếu chúng tôi muốn chỉ mục Employeeid từ bộ sưu tập.
db.Employee.createIndex({Employeeid:1])
8[Bài viết liên quan. Bảng cheat lệnh MongoDB]
Đầu ra của đoạn mã sau sẽ như sau
đầu ra
- “nIndexeswas. 3” cho biết số lượng chỉ mục đã có trước khi thao tác dropIndex() được thực thi. Do đó, nó cho thấy rằng có 3 chỉ mục trong bộ sưu tập
- được rồi. 1 đầu ra cho biết rằng truy vấn bỏ chỉ mục đã được thực hiện thành công và chỉ mục “Employeeid” đã bị loại bỏ khỏi trường chỉ mục
[Bài viết liên quan. Cách cài đặt MongoDB trên Windows]
Nếu bạn muốn loại bỏ tất cả các chỉ mục, bạn có thể sử dụng phương thức indexes() để đạt được nhiệm vụ
Việc thực hiện này có thể được thực hiện như sau
db.Employee.createIndex({Employeeid:1])
9Nếu lệnh được thực hiện thành công, Kết quả sau sẽ được hiển thị
đầu ra
- Như đã đề cập ở trên, "nIndexeswas. 2” cho biết số lượng chỉ mục đã có trước khi thao tác dropIndex() được thực thi. Do đó, nó cho thấy rằng có 3 chỉ mục trong bộ sưu tập
- Cần lưu ý rằng mỗi bộ sưu tập chứa trường '_id', đây cũng là một loại giá trị trường cho chỉ mục i. e. theo một giá trị mặc định. Do đó, trường này sẽ không bị MongoDB loại bỏ và đó là số liệu thống kê của tab 'tin nhắn'
- được rồi. 1 đầu ra cho biết rằng truy vấn loại bỏ chỉ mục đã được thực hiện thành công và tất cả các chỉ mục từ bộ sưu tập đã bị loại bỏ khỏi trường chỉ mục
[Bài viết liên quan. 7 công cụ GUI MongoDB hàng đầu năm 2020]
Sự kết luận
Bằng cách lướt qua bài viết đã nói ở trên, chúng tôi có thể kết luận đơn giản rằng việc tạo các chỉ mục dựa trên các truy vấn của bạn là tốt cho cơ sở dữ liệu của bạn. Các loại chỉ mục khác nhau có thể được xác định theo bộ sưu tập của bạn. Không tạo chỉ mục có thể gây mất thời gian và làm chậm quá trình thực hiện truy vấn
Truy vấn sẽ quét qua toàn bộ bộ sưu tập trước khi thực hiện và trả về kết quả phù hợp. Điều này cũng sẽ làm cho ứng dụng của bạn rất chậm.
Tuy nhiên, tạo nhiều chỉ mục cũng không phải là cách làm tốt. Nếu cơ sở dữ liệu có yêu cầu cập nhật hoặc chèn giá trị thường xuyên, thì các chỉ mục cũng cần được cập nhật nhiều lần. Đó là lý do tại sao việc tạo nhiều chỉ mục hơn mức cần thiết có thể gây thêm thời gian cho toàn bộ thao tác chèn hoặc cập nhật
Việc tạo các Chỉ mục không liên quan có thể gây ra tốc độ máy chủ chậm và cũng ảnh hưởng đến dung lượng RAM của bạn vì các Chỉ mục được tạo được lưu trữ trong RAM
Đối chiếu chỉ mục MongoDB là gì?
Đối chiếu cho phép người dùng chỉ định quy tắc dành riêng cho ngôn ngữ để so sánh chuỗi , chẳng hạn như quy tắc cho chữ cái và dấu trọng âm. Bạn có thể chỉ định đối chiếu cho một bộ sưu tập hoặc dạng xem, chỉ mục hoặc các hoạt động cụ thể hỗ trợ đối chiếu.
MongoDB có hỗ trợ đối chiếu không?
MongoDB hỗ trợ đối chiếu trên hầu hết các thao tác và tập hợp CRUD . Để có danh sách đầy đủ các thao tác được hỗ trợ, hãy xem trang hướng dẫn sử dụng máy chủ Operations that Support Collations. Để biết danh sách đầy đủ các ngôn ngữ được hỗ trợ, hãy xem trang hướng dẫn sử dụng máy chủ của chúng tôi trên Ngôn ngữ và ngôn ngữ được hỗ trợ.
MongoDB có tự động tạo chỉ mục không?
Mỗi bộ sưu tập trong MongoDB sẽ tự động có một chỉ mục trên trường _id . Chỉ mục này sau đó có thể được sử dụng để lấy tài liệu từ cơ sở dữ liệu một cách hiệu quả. Tuy nhiên, hầu hết thời gian bạn sẽ cần truy vấn dữ liệu trên các trường cụ thể khác.
Cú pháp chính xác để tạo chỉ mục trong MongoDB là gì?
Cú pháp. Cú pháp cơ bản của phương thức createIndex() như sau() . Ở đây khóa là tên của trường mà bạn muốn tạo chỉ mục và 1 là thứ tự tăng dần. Để tạo chỉ mục theo thứ tự giảm dần, bạn cần sử dụng -1.