MongoDB 速習チュートリアル

$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)