Anda mungkin ingin membaca dokumen mengenai $sort
kinerja
:
Juga, perlu diingat bahwa ini disebut 'agregasi pipa ' untuk sebuah alasan. Tidak masalah di mana Anda mengurutkan setelah mencocokkan. Jadi solusinya seharusnya cukup sederhana:
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 } }
])
Pemeriksaan apakah bidang file ada mungkin tidak diperlukan ketika dijamin bahwa bidang tersebut ada di setiap catatan. Ini tidak ada salahnya, karena ada indeks di lapangan. Sama halnya dengan pengurutan tambahan:karena kami memastikan bahwa hanya dokumen yang berisi bidang file yang masuk ke pipeline, indeks harus digunakan.