$sortByCount (件数順ソート)
最終更新:2026-10-09
$sortByCount (件数順ソート)
$sortByCount は $group と $sort の省略記法です: 式の値ごとにグループ化し、グループごとの件数を数えて、{ _id: value, count: N } を件数の降順で出力します。単語頻度やカテゴリのランキングに最適です。$sum: 1 の $group に、件数降順の $sort を続けたものと同じです。
| カテゴリ | コアステージ |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $sortByCount: <expression> }
⚙️ パラメータ
| グループ化式 | グループキーを決定する式。フィールド参照または計算式です。 |
|---|
戻り値:count の降順で並べた { _id, count } ドキュメントストリーム
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $sortByCount: 評価ごとのレビュー件数
db.reviews.aggregate([
{ $sortByCount: '$rating' }
])
出力:
{ "_id": 5, "count": 42 }
{ "_id": 4, "count": 31 }
📌 注意事項
- 出力は _id と count フィールドに固定される
- 結果は件数の降順でソートされる
- 配列フィールドは配列全体でグループ化される。要素ごとに数えるなら先に $unwind
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q$sortByCount と $group の違いは?
A$sortByCount は $group と $sort を合わせた省略記法で、出力は _id/count に固定され、件数の降順で並びます。
Q結果を昇順にできますか?
A直接はできません。別の順序が必要なら通常の $group と $sort を組み合わせて書きます。
Q複数フィールドでグループ化できますか?
A複数フィールドを参照するドキュメント式をグループキーとして渡します。