Sử dụng đường dẫn tổng hợp sau:
db.click_log.aggregate([
{ "$match" : { "log.type" : { "$ne" : "emailed" } } }, // get rid of docs with an "emailed" value in log.type and docs not from this month
{ "$unwind" : "$log" }, // unwind to get log elements as separate docs
{ "$project" : { "_id" : 1, "log" : 1, "month" : { "$month" : "$log.utc_timestamp" } } },
{ "$match" : { "log" : "clicked", "month" : <# of month> } }, // get rid of log elements not from this month and that aren't type clicked
{ "$group" : { "_id" : "$_id", "count" : { "$sum" : 1 } } } // collect clicked elements from same original doc and count number
])
Điều này sẽ trả về, đối với mỗi tài liệu không có "được gửi qua email" dưới dạng giá trị của log.type , số lượng các phần tử của mảng log có log.type giá trị clicked và với dấu thời gian của tháng hiện tại. Nếu bạn muốn khoảng thời gian trượt 30 ngày trong tháng, hãy thay đổi $match là một truy vấn phạm vi với $gt và $lt bao gồm khoảng thời gian mong muốn.