MongoDB tạo chỉ mục với đối chiếu

Trong bài đăng này, chúng tôi sẽ chỉ cho bạn cách xây dựng các chỉ mục phân biệt chữ hoa chữ thường trong MongoDB bằng Collations, một tính năng mới được MongoDB phát hành trong phiên bản 3. 4

Chỉ mục không phân biệt chữ hoa chữ thường là gì?

Các chỉ mục không phân biệt chữ hoa chữ thường hỗ trợ các truy vấn thực hiện so sánh chuỗi mà không cần quan tâm đến chữ cái viết hoa chữ thường và với MongoDB 3. 4 hỗ trợ Bộ sưu tập, những thứ này hiện có thể được xây dựng. Đối chiếu cung cấp cho bạn khả năng chỉ định các quy tắc dành riêng cho ngôn ngữ để so sánh chuỗi. Vì các phiên bản trước của MongoDB không hỗ trợ Đối chiếu, bạn bị giới hạn thực hiện so sánh chỉ mục phân biệt chữ hoa chữ thường. Trong các trường hợp cần hành vi phân biệt chữ hoa chữ thường, tùy chọn duy nhất là chuyển đổi/lưu trữ tất cả các chuỗi của bạn thành chữ hoa hoặc chữ thường rồi thực hiện phép so sánh. Như bạn có thể tưởng tượng, điều này gây ra rất nhiều rắc rối với các truy vấn và thao tác lập chỉ mục

Thuộc tính Đối chiếu có thể được đặt ở cấp bộ sưu tập hoặc rõ ràng khi tạo chỉ mục

  1. Đặt Thuộc tính đối chiếu ở cấp bộ sưu tập

    Nếu được đặt ở cấp bộ sưu tập, nó không cần được chỉ định với mọi lệnh tạo chỉ mục khi chỉ mục kế thừa Đối chiếu của bộ sưu tập. Trừ khi được chỉ định rõ ràng trong thời gian tạo, một bộ sưu tập không có Đối chiếu được liên kết với nó. Bạn có thể xác định chi tiết Đối chiếu của bộ sưu tập của mình bằng các lệnh được cung cấp bên dưới

    >db.createCollection("test")
    >db.getCollectionInfos({name: test'});
    [
    {
    "name" : "test",
    "type" : "collection",
    "options" : {
    
    },
    "info" : {
    "readOnly" : false
    },
    "idIndex" : {
    "v" : 2,
    "key" : {
    "_id" : 1
    },
    "name" : "_id_",
    "ns" : "test.test"
    }
    }
    ]
    

  2. Đặt Thuộc tính đối chiếu khi tạo chỉ mục

    Đây là cách bạn có thể chỉ định rõ ràng Collation khi tạo bộ sưu tậ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"
    }
    }
    }
    ]
    
    

  3. Đặt Thuộc tính đối chiếu trong khi tạo chỉ mục

    Bạn cũng có tùy chọn để đặt Đối chiếu rõ ràng cho một chỉ mục trong khi xây dựng nó. Ví dụ: thêm “chỉ mục” vào thuộc tính tên của bộ sưu tập thử nghiệm với ngôn ngữ 'en' và cường độ 2

    >db.test.createIndex( { name: 1}, { collation: { locale: 'en', strength: 2 } })
    

  4. Cách truy vấn bằng cách sử dụng đối chiếu

    Thuộc tính Đối chiếu cần được chỉ định tại thời điểm truy vấn để sử dụng chỉ mục được tạo bằng Đối chiếu

    db.test.find({name:'blah'})
    

    Cách truy vấn các chỉ mục phân biệt chữ hoa chữ thường với Đối chiếu trong MongoDBNhấp để Tweet
  5. Chỉ định Đối chiếu trong Truy vấn của bạn

    Truy vấn này sẽ không sử dụng chỉ mục được chỉ định ở trên vì Đối chiếu không được chỉ định. Để tận dụng Collation, chúng ta cần chỉ định rõ ràng nó trong truy vấn

    db.test.find({name:'blah'}).collation({ locale: 'en', strength: 2 })
    

    Ngay cả khi bộ sưu tập của bạn có Đối chiếu mặc định, bạn vẫn cần chỉ định Đối chiếu trong truy vấn của mình. Nếu không, MongoDB sẽ không sử dụng chỉ mục cụ thể

  6. Đố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 để Tweet

    Thô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

    MongoDB tạo chỉ mục với đối chiếu

    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"
    }
    }
    }
    ]
    
    
    1

    Chỉ 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"
    }
    }
    }
    ]
    
    
    3

    Tù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 định

    Tù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"
    }
    }
    }
    ]
    
    
    4ParameterTypeDescription2dsphereIndexVersioninteger

    Khô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ảbitsinteger

    Khô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. 0

    Cá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 0

    Hà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"
    }
    }
    }
    ]
    
    
    5

    Bây giờ để sắp xếp chỉ mục theo thứ tự tăng dần

    db.Employee.createIndex({Employeeid:1])
    0

    Ví 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])
    1

    Trong 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])
    2

    Chỉ 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à

    1. 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)
    2. 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
    3. 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
    4. đò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
    5. 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])
    6

    ngườ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])
    7

    Phươ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

    1. “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
    2. đượ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])
    9

    Nế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.