MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

3 cách tạo chỉ mục trong MongoDB

Trong MongoDB, bạn có thể tạo chỉ mục trên một bộ sưu tập bằng cách sử dụng createIndex() , createIndexes() hoặc createIndexes lệnh quản trị.

createIndex() Phương pháp

db.collection.createIndex() phương thức tạo một chỉ mục trên bộ sưu tập được chỉ định. Nó là một trình bao bọc cho createIndexes lệnh quản trị.

Ví dụ:

db.pets.createIndex( { weight: -1 } )

Điều này tạo ra một chỉ mục trên bộ sưu tập vật nuôi. Đây là chỉ số giảm dần trên weight đồng ruộng. Chúng tôi biết nó đang giảm dần vì chúng tôi đã chỉ định -1 . Nếu chúng tôi đã chỉ định 1 nó sẽ tăng dần.

Chỉ mục kết hợp là chỉ mục được xác định trên nhiều trường. Bạn có thể tạo chỉ mục kết hợp bằng cách phân tách từng trường bằng dấu phẩy.

Ví dụ:

db.pets.createIndex( { name: 1, type: -1 } )

Điều này tạo ra một chỉ mục kết hợp trên name trường (theo thứ tự tăng dần) và type trường (theo thứ tự giảm dần).

createIndexes() Phương pháp

db.collection.createIndexes() phương thức tạo một hoặc nhiều chỉ mục trên một tập hợp Phương thức này cũng là một trình bao bọc cho createIndexes lệnh quản trị.

Khi bạn tạo chỉ mục với createIndexes() , bạn cần cung cấp các trường trong một mảng. Bạn cần làm điều này ngay cả khi bạn chỉ tạo một chỉ mục duy nhất.

Ví dụ:

db.pets.createIndexes( [ { weight: -1 } ] )

Điều đó làm tương tự như ví dụ đầu tiên. Nó tạo ra một chỉ mục giảm dần trên weight trường.

Để tạo nhiều chỉ mục, hãy phân tách từng tài liệu của chỉ mục bằng dấu phẩy.

Ví dụ:

db.pets.createIndexes( [ { name: 1 }, { weight: -1 } ] )

Bạn cũng có thể tạo chỉ mục kết hợp với createIndexes() . Để thực hiện việc này, chỉ cần xác định chỉ mục kết hợp trong tài liệu cho chỉ mục đó.

Do đó, chúng tôi có thể làm như sau:

db.pets.createIndexes( [ { name: 1, type: -1 }, { weight: -1 } ] )

Điều đó tạo ra một chỉ mục kết hợp cho nametype và một chỉ mục riêng cho weight trường.

createIndexes Lệnh

createIndexes lệnh quản trị tạo một hoặc nhiều chỉ mục trên một tập hợp Hai phương thức trước là các trình bao bọc xung quanh lệnh này.

Do đó, chúng ta có thể sử dụng createIndexes lệnh để tạo các chỉ mục mà chúng ta đã làm trong các ví dụ trước.

Dưới đây là ví dụ về cách tạo chỉ mục trên name lĩnh vực:

db.runCommand(
  {
    createIndexes: "pets",
    indexes: [
      {
        key: { "name" : 1 },
        name: "idx_name_1"
      }
    ]
  }
)

Trong các ví dụ trước, chúng tôi để MongoDB đặt tên cho các chỉ mục của chúng tôi, nhưng trong trường hợp này, chúng tôi đặt tên chỉ mục là idx_name_1 .

Dưới đây là một ví dụ về việc tạo nhiều chỉ mục:

db.runCommand(
  {
    createIndexes: "pets",
    indexes: [
      {
        key: { "name" : 1, type: -1 },
        name: "idx_name_1_type_-1"
      },
      {
        key: { "weight" : -1 },
        name: "idx_weight_-1"
      }
    ]
  }
)

Trong trường hợp này, chỉ mục đầu tiên là chỉ mục ghép trên nametype và chúng tôi đặt tên nó là idx_name_1_type_-1 .

Chỉ mục thứ hai nằm trên weight và chúng tôi gọi nó là idx_weight_-1 .

Chỉ mục ký tự đại diện

Tất cả ba phương pháp trên đều hỗ trợ các chỉ mục ký tự đại diện kể từ MongoDB 4.2 (featureCompatibilityVersion ít nhất phải là 4.2 để tạo chỉ mục ký tự đại diện).

Chỉ mục ký tự đại diện hữu ích cho các bộ sưu tập chứa dữ liệu phi cấu trúc với các trường khác nhau trong các phân cấp khác nhau.

Xem Cách tạo Chỉ mục ký tự đại diện trong MongoDB để biết ví dụ.

Tài liệu MongoDB

Dưới đây là các liên kết đến tài liệu MongoDB cho từng điều trên:

  • db.collection.createIndex()
  • db.collection.createIndexes()
  • createIndexes

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Trình điều khiển MongoDB trưởng thành nhất cho C # là gì?

  2. Kết hợp hai truy vấn OR với AND trong Mongoose

  3. Làm cách nào để trả về kết quả Mongoose từ phương thức find?

  4. MongoDB trên Azure:Làm thế nào để Chọn Loại Phiên bản Phù hợp?

  5. Trong MongoDB, tìm kiếm trong một mảng và sắp xếp theo số lượng kết quả phù hợp