Možná si budete chtít přečíst dokumenty týkající se $sort
výkon
:
Také mějte na paměti, že se nazývá 'agregační potrubí ' z důvodu. Je prostě jedno, kam po seřazení seřadíte. Řešení by tedy mělo být docela jednoduché:
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 } }
])
Kontrola, zda pole souboru existuje, může být zbytečná, pokud je zaručeno, že pole existuje v každém záznamu. To není na škodu, protože na poli je index. Totéž platí s dalším řazením:protože jsme zajistili, že do kanálu vstupují pouze dokumenty obsahující pole souboru, měl by být použit index.