$sortArray (配列内の要素をソート)

最終更新:2026-10-09

$sortArray (配列内の要素をソート)

$sortArray は配列内の要素をソートし、MongoDB 5.2 で新しく追加されました。スカラー配列には 1(昇順)や -1(降順)を指定し、オブジェクトの配列には { field: 1/-1 } や [ [ 'field', 1 ] ] 形式でソートキーを指定します。表示前にコメントを時刻の降順に並べたり、商品を価格の昇順に並べたりするのに使います。元の配列を変更せず新しい配列を返します。空の sortBy オブジェクトはエラーになります。

カテゴリ配列
MongoDB バージョン1.0+
例の言語mongosh(シェル)

📝 構文

{ $sortArray: { input: <array>, sortBy: <sortSpec> } }

⚙️ パラメータ

input並べ替える配列。
sortByソート指定: スカラー配列では 1/-1、オブジェクト配列では { field: 1/-1 } または [ [ 'field', 1 ] ]。

戻り値:要素を並べ替えた新しい配列

▶ 例

以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):

// $sortArray: アイテムを価格の昇順でソート
db.orders.aggregate([
  { $project: {
      sorted: { $sortArray: { input: '$items', sortBy: { price: 1 } } }
  } }
])

出力:

{ '_id': 1, 'sorted': [ { 'sku': 'B', 'price': 5 }, { 'sku': 'A', 'price': 9 } ] }

📌 注意事項

さらなる実践ケースを近日公開予定。

📚 関連チュートリアル

❓ よくある質問

Q複数フィールドのソートはできますか?
Aはい — [ [ 'field1', 1 ], [ 'field2', -1 ] ] 形式を使います。
Q古い MongoDB でも動きますか?
A5.2 で新設されました。古いバージョンでは $unwind で展開し $sort してから再グループ化します。
Qキーを持たない要素はどこに並びますか?
A配列の末尾に並びます。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%