Có vẻ như nhận xét của tôi đã bị hiểu nhầm một chút, vì vậy tôi sẽ làm rõ. Nó không thực sự quan trọng khi bạn gọi nó miễn là nó được gọi vào một thời điểm nào đó trước khi bạn gọi find () lần đầu tiên. Nói cách khác, không thực sự quan trọng khi bạn tạo chỉ mục, miễn là nó ở đó trước khi bạn muốn sử dụng.
Một mô hình phổ biến mà tôi đã thấy rất nhiều là mã hóa ensureIndex
đồng thời (và ở cùng một nơi) với find()
cuộc gọi. ensureIndex
sẽ kiểm tra xem chỉ mục có tồn tại hay không và tạo nó nếu không. Không nghi ngờ gì nữa, có một số chi phí (mặc dù rất nhỏ) trong việc gọi ensureindex trước khi gọi find () vì vậy tốt hơn là không nên làm điều này.
Tôi gọi ensureIndex
trong mã để đơn giản hóa việc triển khai và tránh phải quản lý db và codebase riêng biệt. Sự cân bằng giữa việc dễ dàng triển khai sẽ cân bằng sự dư thừa của các cuộc gọi tiếp theo để đảm bảoIndex (đối với tôi.)