Đó là giới hạn 100MB bộ nhớ cho mỗi stage của aggregation pipeline (áp dụng cho $group, $sort, $bucket...). allowDiskUse: true cho phép stage ghi tạm ra đĩa để vượt trần.
db.events.aggregate(pipeline, { allowDiskUse: true })Nhưng nó là giải pháp tình thế, không phải cách sửa gốc: ghi/đọc file tạm chậm hơn nhiều lần và tạo tải I/O lên node đang phục vụ. Nên xem lại pipeline trước:
1. Thu hẹp input: thêm $match theo khoảng thời gian ở đầu pipeline; báo cáo thường không cần toàn bộ lịch sử.
2. Bỏ field không dùng bằng $project sớm — $group chỉ giữ trong bộ nhớ những gì nó nhận.
3. Giảm số nhóm: $group theo userId trên 50 triệu user thì tự nó đã vượt trần; gom theo ngày/khu vực trước rồi mới tổng hợp.
4. Tiền tính toán (computed pattern): cập nhật sẵn số liệu tổng hợp khi ghi, thay vì quét lại toàn bộ mỗi lần đọc báo cáo.
Lưu ý từ MongoDB 6.0, allowDiskUse bật mặc định cho các stage cần nó; giới hạn có thể chỉnh qua allowDiskUseByDefault. Trong phỏng vấn, câu trả lời được đánh giá cao là "sửa pipeline trước, bật disk sau".