Đếm dường như như một trong những thứ đáng ra phải rẻ, nhưng thường thì không. Vì mongo không duy trì số lượng tài liệu phù hợp với các tiêu chí nhất định trong chỉ mục b-tree của nó, nó cần phải quét qua các tài liệu đếm chỉ mục khi nó hoạt động. Điều đó có nghĩa là việc đếm 100x tài liệu sẽ mất gấp 100 lần thời gian và đây gần như là những gì chúng ta thấy ở đây - 0.018 * 100 = 1.8s
.
Để tăng tốc độ này, bạn có một số tùy chọn:
- Số lượng hoạt động gần như là
estimatedDocumentCount() - db.users.countDocuments({status: 'inactive'})
. Điều này có đủ chính xác cho trường hợp sử dụng của bạn không? - Ngoài ra, bạn có thể duy trì
counts
tài liệu trong một bộ sưu tập riêng biệt mà bạn giữ để đồng bộ hóa với số lượng tài liệu đang hoạt động / không hoạt động mà bạn có.