Trong collection transactions, mỗi document là một nhóm giao dịch của một tài khoản; số lượng amount của từng giao dịch nằm trong mảng transactions (truy cập bằng "transactions.amount").
Thực hiện các bước sau:
• Phân tích truy vấn: tìm các document có account_id bằng 443178 và có giao dịch với transactions.amount > 1000
• Tạo compound index phù hợp cho truy vấn trên (phương án 1; mọi trường tăng dần, 1) — gợi ý: quy tắc ESR (Equality → Sort → Range)
• Chạy truy vấn với explain("executionStats")
• Kiểm tra thứ tự field trong index có ảnh hưởng thế nào: xoá index trên, tạo index cùng hai trường nhưng đảo ngược thứ tự (phương án 2), chạy lại explain("executionStats") và so sánh
Điền vào các chỗ TODO trong template, giữ nguyên các lệnh print; nhận xét ghi bằng comment //.
Không cần lệnh use: collection đã có sẵn trong database hiện tại. Không in toàn bộ kết quả explain() (có chứa thời gian chạy, thông tin máy chủ thay đổi mỗi lần chạy) — chỉ in đúng các giá trị mà phần Output yêu cầu.
Collection transactions (dữ liệu mẫu sample_analytics.transactions) đã được nạp sẵn vào database hiện tại.
Đúng 9 dòng (theo các lệnh trong template):
nReturned, totalKeysExamined, totalDocsExamined với phương án 1dropIndex: { nIndexesWas: 2, ok: 1 }nReturned, totalKeysExamined, totalDocsExamined với phương án 2Ví dụ:
Đầu vào:
sample_analytics.transactions
Đầu ra:
account_id_1_transactions.amount_1
1
63
1
{ nIndexesWas: 2, ok: 1 }
transactions.amount_1_account_id_1
1
17756
1Đang tải editor...