Tóm lược. trong hướng dẫn này, bạn sẽ tìm hiểu về các chỉ mục phức hợp MongoDB và cách tạo chỉ mục phức hợp cho các trường trong một bộ sưu tập
Giới thiệu về các chỉ mục hợp chất MongoDB
Chỉ mục phức hợp là chỉ mục chứa tham chiếu đến nhiều trường của bộ sưu tập. Nói chung, một chỉ mục phức hợp có thể tăng tốc các truy vấn phù hợp trên nhiều trường
Để tạo chỉ mục ghép, bạn sử dụng phương thức
2 với cú pháp sauCode language: JavaScript [javascript]
db.movies.createIndex[{ title: 1, year: 1 }]
Code language: JavaScript [javascript]
db.collection.createIndex[{ field1: type, field2: type, field3: type, ... }];
Trong cú pháp này, bạn chỉ định một tài liệu chứa các khóa chỉ mục [trường1, trường2, trường3…] và các loại chỉ mục
0 mô tả loại chỉ mục cho mỗi khóa chỉ mục. Ví dụ: loạiCode language: JavaScript [javascript]
db.movies.createIndex[{ title: 1, year: 1 }]
1 chỉ định một chỉ mục sắp xếp các mục theo thứ tự tăng dần trong khiCode language: JavaScript [javascript]
db.movies.createIndex[{ title: 1, year: 1 }]
2 chỉ định một chỉ mục sắp xếp các mục theo thứ tự giảm dầnCode language: JavaScript [javascript]
db.movies.createIndex[{ title: 1, year: 1 }]
MongoDB cho phép bạn tạo một chỉ mục phức hợp chứa tối đa 32 trường
Điều quan trọng là phải hiểu rằng thứ tự của các trường được chỉ định trong chỉ mục tổng hợp là quan trọng
Nếu một chỉ mục ghép có hai trường. trường1 và trường2, nó chứa các tham chiếu đến tài liệu được sắp xếp theo trường1 trước. Và trong mỗi giá trị của trường1, nó có các giá trị được sắp xếp theo trường2
Bên cạnh việc hỗ trợ các truy vấn khớp với tất cả các khóa chỉ mục, một chỉ mục phức hợp có thể hỗ trợ các truy vấn khớp với tiền tố của các trường chỉ mục. Ví dụ: nếu một chỉ mục phức hợp chứa hai trường. trường1 và trường2, nó sẽ hỗ trợ các truy vấn trên
- trường1
- trường1 và trường2
Tuy nhiên, nó không hỗ trợ truy vấn chỉ khớp với
3Code language: JavaScript [javascript]
db.movies.createIndex[{ title: 1, year: 1 }]
Ví dụ về chỉ mục hợp chất MongoDB
Hãy lấy ví dụ về việc sử dụng các chỉ số phức hợp
Đầu tiên, tạo một chỉ mục tổng hợp trên các trường
4 vàCode language: JavaScript [javascript]
db.movies.createIndex[{ title: 1, year: 1 }]
5 của bộ sưu tậpCode language: JavaScript [javascript]
db.movies.createIndex[{ title: 1, year: 1 }]
6Code language: JavaScript [javascript]
db.movies.createIndex[{ title: 1, year: 1 }]
db.movies.createIndex[{ title: 1, year: 1 }]
Code language: JavaScript [javascript]
đầu ra
Code language: JavaScript [javascript]
title_1_year_1
Thứ hai, tìm những bộ phim có tiêu đề chứa từ
7 và được phát hành vào năm 2014Code language: JavaScript [javascript]
db.movies.createIndex[{ title: 1, year: 1 }]
1Code language: JavaScript [javascript]
db.movies.createIndex[{ title: 1, year: 1 }]
đầu ra
2Code language: JavaScript [javascript]
db.movies.createIndex[{ title: 1, year: 1 }]
Truy vấn sử dụng chỉ mục
8 thay vì quét toàn bộ bộ sưu tập để tìm kết quảCode language: JavaScript [javascript]
db.movies.createIndex[{ title: 1, year: 1 }]
Thứ ba, tìm những bộ phim có tiêu đề chứa từ
7Code language: JavaScript [javascript]
db.movies.createIndex[{ title: 1, year: 1 }]
5Code language: JavaScript [javascript]
db.movies.createIndex[{ title: 1, year: 1 }]
đầu ra
6Code language: JavaScript [javascript]
db.movies.createIndex[{ title: 1, year: 1 }]
Truy vấn này chỉ khớp với tiêu đề, không khớp với năm. Tuy nhiên, trình tối ưu hóa truy vấn vẫn sử dụng chỉ mục
8Code language: JavaScript [javascript]
db.movies.createIndex[{ title: 1, year: 1 }]
Cuối cùng, tìm những bộ phim đã được phát hành trong năm 2014
8Code language: JavaScript [javascript]
db.movies.createIndex[{ title: 1, year: 1 }]
đầu ra
9Code language: JavaScript [javascript]
db.movies.createIndex[{ title: 1, year: 1 }]
Trong ví dụ này, trình tối ưu hóa truy vấn không sử dụng chỉ mục
8 mà quét toàn bộ bộ sưu tập [Code language: JavaScript [javascript]
db.movies.createIndex[{ title: 1, year: 1 }]
2] để tìm kết quả khớpCode language: JavaScript [javascript]
title_1_year_1