に関するドキュメントを読むことをお勧めします$sort
パフォーマンス
:
また、これは「集約パイプライン」と呼ばれることに注意してください。 '理由があります。マッチング後にどこでソートするかは問題ではありません。したがって、解決策は非常に単純である必要があります:
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 } }
])
ファイルフィールドがすべてのレコードに存在することが保証されている場合は、ファイルフィールドが存在するかどうかのチェックは不要な場合があります。フィールドにインデックスがあるので、これは害にはなりません。追加の並べ替えについても同じことが言えます。ファイルフィールドを含むドキュメントのみがパイプラインに入力されるようにしたため、インデックスを使用する必要があります。