Chương này giới thiệu về các chỉ mục trong MongoDB. Tương tự như MYSQL, MongoDB cũng hỗ trợ chỉ mục. Sự khác biệt là MongoDB hỗ trợ việc thêm chỉ mục vào bất kỳ trường lồng nhau nào trong cấu trúc JSON, với mục đích tăng cường hiệu suất truy vấn.
Các loại chỉ mục trong MongoDB
Chỉ mục Trường Đơn
Tương tự như MYSQL, tạo chỉ mục cho một trường đơn
Định dạng:
db.collection.createIndex( { tên_trường: hướng_sắp_xếp(1 hoặc -1) } )
Lưu ý: Hướng sắp xếp 1 đại diện cho sắp xếp tăng dần, và -1 đại diện cho sắp xếp giảm dần.
Ví dụ 1:
db.records.createIndex( { score: 1 } )
Tạo một chỉ mục cho trường điểm số.
Ví dụ 2:
db.records.createIndex( { "location.state": 1 } )
Tạo một chỉ mục cho trường lồng nhúng JSON location.state.
Chỉ mục Kết Hợp
Tương tự như MYSQL, nhiều trường có thể được kết hợp để tạo một chỉ mục, tăng tốc độ của các truy vấn kết hợp.
Định dạng:
db.collection.createIndex( { <trường1>: <kiểu>, <trường2>: <kiểu2>, ... } )
Ví dụ:
db.products.createIndex( { "item": 1, "stock": 1 } )
Tạo một chỉ mục kết hợp cho các trường item và stock, cả hai đều theo thứ tự tăng dần (1 đại diện cho thứ tự tăng dần).
Chỉ mục Văn Bản (Chỉ mục Toàn Văn)
Chỉ mục văn bản (text) chủ yếu được sử dụng để hỗ trợ tìm kiếm toàn văn.
Lưu ý: Một bộ sưu tập chỉ cho phép một chỉ mục văn bản, nhưng một chỉ mục văn bản có thể bao gồm nhiều trường.
Ví dụ:
db.stores.createIndex( { name: "text", description: "text" } )
Tạo một chỉ mục toàn văn cho các trường tên và mô tả.
Lưu ý: Để biết chi tiết, vui lòng tham khảo Mục chỉ mục toàn văn.
Chỉ mục Không Gian (Chỉ mục Địa Lý)
Chủ yếu được sử dụng để hỗ trợ các truy vấn liên quan đến thông tin địa lý, chủ yếu hỗ trợ hai loại chỉ mục: 2dsphere và 2d. Để biết chi tiết, vui lòng tham khảo Mục Truy vấn Địa Lý.
Xóa Chỉ mục
Để liệt kê tất cả các chỉ mục trong một bộ sưu tập:
db.pets.getIndexes()
Để xóa chỉ mục catIdx từ bộ sưu tập pets:
db.pets.dropIndex( "catIdx" )