Các truy vấn quốc gia, được lập chỉ mục hoặc cách khác, chậm do MongoDB vẫn phải thực hiện toàn bộ quá trình tìm kiếm tài liệu phù hợp với tiêu chí của bạn. Lý do cho điều này là cấu trúc b-tree MongoDB không được "đếm" nghĩa là mỗi nút không lưu trữ thông tin về số lượng phần tử trong nút / cây con.
Sự cố được báo cáo tại đây https://jira.mongodb.org/browse/SERVER-1752 và hiện không có giải pháp nào để cải thiện hiệu suất ngoài việc duy trì thủ công một bộ đếm cho bộ sưu tập đó, điều này rõ ràng đi kèm với một số nhược điểm.
Cũng lưu ý rằng phiên bản db.col.count () (vì vậy không có tiêu chí) có thể sử dụng một phím tắt lớn và không thực sự thực hiện một truy vấn, do đó nó rất nhanh. Điều đó nói rằng nó không phải lúc nào cũng báo cáo cùng một giá trị như một truy vấn đếm sẽ trả về tất cả các phần tử (ví dụ:nó sẽ không nằm trong môi trường phân mảnh với thông lượng ghi cao). Lên để tranh luận xem đó có phải là một lỗi hay không. Tôi nghĩ là như vậy.
Lưu ý rằng trong 2.3+, một tối ưu hóa quan trọng đã được giới thiệu sẽ (và thực hiện) cải thiện hiệu suất của số lượng trên các trường được lập chỉ mục. Xem: https://jira.mongodb.org/browse/SERVER-7745