Bạn có thể muốn đọc tài liệu liên quan đến $sort
hiệu suất
:
Ngoài ra, hãy nhớ rằng nó được gọi là 'tổng hợp đường ống 'vì một lý do. Đơn giản là bạn sắp xếp ở đâu sau khi đối sánh không quan trọng. Vì vậy, giải pháp phải khá đơn giản:
db.access_log.aggregate([
{
"$match": {
"visit_dt": {
"$gte": ISODate('2015-03-09'),
"$lt": ISODate('2015-03-11')
},
"file": {"$exists": true }
}
},
{ "$sort": { "file": 1 } },
{ "$project": { "file": 1, "_id": 0 } },
{ "$group": { "_id": "$file", "count": { "$sum": 1 } } },
{ "$sort": { "count": -1 } }
])
Kiểm tra ướt trường tệp tồn tại có thể không cần thiết khi nó được đảm bảo rằng trường tồn tại trong mọi bản ghi. Điều này không ảnh hưởng gì, vì có một chỉ số trên sân. Tương tự với sắp xếp bổ sung:vì chúng tôi đảm bảo rằng chỉ các tài liệu chứa trường tệp mới vào đường dẫn, nên chỉ mục sẽ được sử dụng.