Last updated on January 28th, 2026 at 04:41 pm
MongoDB – Ở đây bạn theo dõi Document sau của users collection:
{
"address": {
"city": "Los Angeles",
"state": "California",
"pincode": "123"
},
"tags": [
"music",
"cricket",
"blogs"
],
"name": "Tom Benzamin"
}
Document trên chứa một Subdocument là address và một mảng tags.
Lập chỉ mục các trường mảng trong MongoDB
Giả sử rằng chúng ta muốn tìm kiếm trong user document dựa vào các tags. Để thực hiện điều này, chúng ta sẽ tạo một chỉ mục trên mảng tags trong Collection đó.
Tạo một chỉ mục trên mảng tức là tạo các chỉ mục riêng rẽ cho mỗi trường của nó. Vì thế trong tình huống này, khi chúng ta tạo chỉ mục trên mảng tags, các chỉ mục riêng rẽ sẽ được tạo cho các giá trị của nó là music, cricket và blogs.
Để tạo một chỉ mục trên mảng tags, bạn sử dụng:
>db.users.ensureIndex({"tags":1})
Sau khi tạo chỉ mục, chúng ta có thể thực hiện tìm kiếm trên trường tags của Collection đó giống như sau:
>db.users.find({tags:"cricket"})
Để kiểm tra xem chỉ mục hợp lý đã được sử dụng, bạn sử dụng lệnh explain.
>db.users.find({tags:"cricket"}).explain()
Lệnh explain trên trả về kết quả trong “cursor” : “BtreeCursor tags_1” mà xác nhận rằng chỉ mục hợp lý được sử dụng.
Lập chỉ mục các trường là Subdocument
Giả sử rằng bạn muốn tìm kiếm trong các Document dựa vào các trường city, state và pincode. Khi tất cả các trường này là một phần của trường address, là Subdocument, bạn sẽ tạo chỉ mục trên tất cả các trường của Subdocument đó.
Để tạo chỉ mục trên tất cả các trường của Subdocument đó, bạn sử dụng:
>db.users.ensureIndex({"address.city":1,"address.state":1,"address.pincode":1})
Khi chỉ mục đã được tạo, bạn có thể tìm kiếm cho bất kỳ trường nào trong các trường của Subdocument đó. Lợi dụng chỉ mục này như sau:
>db.users.find({"address.city":"Los Angeles"})
Nhớ rằng, biểu thức truy vấn phải theo sau thứ tự của chỉ mục đã được xác định. Do đó, chỉ mục đã tạo ở trên sẽ hỗ trợ các truy vấn sau:
>db.users.find({"address.city":"Los Angeles","address.state":"California"})
Nó cũng sẽ hỗ trợ truy vấn sau:
>db.users.find({"address.city":"LosAngeles","address.state":"California","address.pincode":"123"})
INDA Academy tự hào là đơn vị tiên phong trong việc đào tạo phân tích dữ liệu và AI chuyên sâu, đặc biệt cho khối ngành Ngân hàng – Tài chính – Bảo hiểm tại Việt Nam. Sau hơn 12 năm “thực chiến” cùng những dòng chảy dữ liệu khổng lồ, chúng tôi đã xây dựng nên một hệ sinh thái đào tạo toàn diện, giúp hàng nghìn học viên chuyển mình từ người mới bắt đầu trở thành những chuyên gia lành nghề, sẵn sàng đáp ứng tiêu chuẩn khắt khe của các doanh nghiệp lớn.
Điểm khác biệt lớn nhất tại INDA chính là triết lý đào tạo dựa trên các dự án thực tế (Project-based) và lộ trình cá nhân hóa nhờ ứng dụng AI. Chúng tôi không chỉ dạy bạn cách sử dụng công cụ, mà còn truyền tải tư duy khai phá giá trị từ dữ liệu để đưa ra quyết định kinh doanh chính xác.
Tìm hiểu thêm về các khóa học TẠI ĐÂY:
Môn học SQL
Lộ trình đào tạo Data Engineer
Lộ trình đào tạo Data Analyst
Lộ trình đào tạo Tester
Khóa học Data Engineer nâng cao – Thực chiến 5 dự án doanh nghiệp
Khóa học Data Analyst nâng cao – Thực chiến 5 dự án doanh nghiệp

