Đây là một câu trả lời muộn, nhưng vì $group
trong Mongo kể từ phiên bản 4.0 vẫn sẽ không sử dụng các chỉ mục, nó có thể hữu ích cho những người khác.
Để tăng tốc độ tổng hợp của bạn một cách đáng kể, hãy nhập $sort
trước $group
.
Vì vậy, truy vấn của bạn sẽ trở thành:
db.ads_view.aggregate({$sort:{"campaign":1}},{$group: {_id : "$campaign", "action" : {$sum: 1} }});
Điều này giả định một chỉ mục trên campaign
, mà lẽ ra phải được tạo theo câu hỏi của bạn. Trong Mongo 4.0, tạo chỉ mục với db.ads_view.createIndex({campaign:1})
.
Tôi đã thử nghiệm điều này trên một bộ sưu tập chứa 5.5+ Mio. các tài liệu. Không có $sort
, việc tổng hợp sẽ không kết thúc ngay cả sau vài giờ; với $sort
trước $group
, việc tổng hợp mất vài giây.