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
_idduy 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()