$map (配列の各要素を変換)

最終更新:2026-10-09

$map (配列の各要素を変換)

$map は配列を反復し、各要素を in 式に通して、同じ長さの新しい配列に結果を集めます。集計式で最も使われる関数型演算子です。代表的な用途は、注文の全アイテムに税を適用する、文字列のリストを大文字化する、オブジェクトの配列からフィールドを抽出するなどです。as で指定した変数は in 内で $$variable として参照し、as を省略した場合は $$this を使います。$map は長さを保って要素の値を変えます。要素の除去が必要なら $filter、畳み込みが必要なら $reduce と組み合わせます。

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

📝 構文

{ $map: { input: <array>, as: <variable>, in: <expression> } }

⚙️ パラメータ

input反復する配列。
as現在の要素の変数名。in 内で $$variable として参照します。任意で、既定は $$this。
in各要素に対して評価される式。その結果が新しい配列を形成します。

戻り値:各要素の in 結果からなる新しい配列。入力が null の場合は null

▶ 例

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

// $map: 各アイテムの数量を 2 倍にする
db.orders.aggregate([
  { $project: {
      doubled: { $map: { input: '$items', as: 'it', in: { $multiply: ['$$it.qty', 2] } } }
  } }
])

出力:

{ '_id': 1, 'doubled': [ 4, 6 ] }
{ '_id': 2, 'doubled': [ 2 ] }

📌 注意事項

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

📚 関連チュートリアル

❓ よくある質問

Q$map と $filter の違いは?
A$map は長さを変えずに全要素を変換します。$filter は内容を変えずに要素を除去します。うまく入れ子にできます。
Q配列の長さは変えられますか?
Aいいえ — 結果の長さは入力と同じです。長さを変えるには $filter や $reduce を使います。
Qas 変数は省略できますか?
Aはい — 省略した場合、in 内では現在の要素を $$this で参照します。
Web-Tutorial.com

Web-Tutorial 技術チーム

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

100%