$sort
1. $sort ステージの基本
このアグリゲーションステージは、指定されたソート順に基づいてすべてのドキュメントを並べ替えます。
ここで重要なのは、「ステージの順序」が結果に大きな影響を与えるということです。アグリゲーションパイプラインにおいて、各ステージは直前のステージから渡されたドキュメントに対してのみ処理を行います。そのため、効率的なクエリを実現するには、適切なタイミングでソートを実行する必要があります。
2. 実装例
以下の例では、「アグリゲーション入門」セクションでロードしたサンプルデータセットの中から、sample_airbnb データベースを使用しています。
2.1 複数のステージを組み合わせたソート処理
db.listingsAndReviews.aggregate([
{
// ステージ 1: "accommodates"(収容人数)フィールドで降順にソート
$sort: { "accommodates": -1 }
},
{
// ステージ 2: name と accommodates フィールドのみを表示
$project: {
"name": 1,
"accommodates": 1
}
},
{
// ステージ 3: 上位 5 件のみを取得
$limit: 5
}
])このクエリを実行すると、accommodates フィールドの値に基づいて降順(値の大きい順)にソートされたドキュメントが返されます。
3. ソート順の指定方法
ソート順は、値を 1 または -1 に設定することで制御します。
| 設定値 | ソート順 | 説明 |
|---|---|---|
| 1 | 昇順 (Ascending) | 小さい値から大きい値へ(A-Z, 0-9) |
| -1 | 降順 (Descending) | 大きい値から小さい値へ(Z-A, 9-0) |