Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

MongoDB Indexes - Tạo index đơn và compound cùng lúc?

Có, bạn có thể sử dụng ensureIndex() (hoặc createIndex() trong phiên bản mới). MongoDB hỗ trợ đầy đủ index trên bất kỳ trường nào trong collection.

Tạo index compound và chèn dữ liệu

> db.demo622.ensureIndex({_id:1, Name:1, Age:1});
{
  "createdCollectionAutomatically" : true,
  "numIndexesBefore" : 1,
  "numIndexesAfter" : 2,
  "ok" : 1
}
> db.demo622.insertOne({_id:101, Name:"Chris", Age:21});
> db.demo622.insertOne({_id:102, Name:"Chris", Age:22});
> db.demo622.insertOne({_id:103, Name:"Bob", Age:21});
> db.demo622.insertOne({_id:104, Name:"Chris", Age:22});
> db.demo622.insertOne({_id:104, Name:"Chris", Age:22});
// Lỗi duplicate key vì _id trùng lặp
> db.demo622.insertOne({_id:105, Name:"Chris", Age:22});

Hiển thị dữ liệu

> db.demo622.find();

Kết quả:

{
  "_id" : 101, "Name" : "Chris", "Age" : 21
}
{
  "_id" : 102, "Name" : "Chris", "Age" : 22
}
{
  "_id" : 103, "Name" : "Bob", "Age" : 21
}
{
  "_id" : 104, "Name" : "Chris", "Age" : 22
}
{
  "_id" : 105, "Name" : "Chris", "Age" : 22
}

Lưu ý quan trọng:

  • ensureIndex({_id:1, Name:1, Age:1}) tạo một **index compound** (đơn) trên 3 trường, không phải tạo 3 index riêng biệt
  • MongoDB tự động tạo index _id duy nhất (unique) mặc định
  • Index compound hỗ trợ truy vấn trên tiền tố của index (prefix), ví dụ: {_id:1}, {_id:1, Name:1}, {_id:1, Name:1, Age:1}
  • Trong MongoDB 3.0+, khuyến nghị dùng createIndex() thay vì ensureIndex()