$arrayElemAt (インデックスで要素を取得)

最終更新:2026-10-09

$arrayElemAt (インデックスで要素を取得)

$arrayElemAt は、配列内の指定したインデックス位置にある要素を返します。集計式で位置に基づいて配列へアクセスするための基本演算子で、注文の先頭アイテム、配列の末尾要素、$project 内での特定位置の取得などによく使われます。インデックスは 0 始まりで、負のインデックスは末尾からのカウントになり、範囲外のアクセスはエラーではなく null を返します。$first/$last とは違い、$arrayElemAt は任意の位置にアクセスできるため、より柔軟です。

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

📝 構文

{ $arrayElemAt: [ <array>, <index> ] }

⚙️ パラメータ

配列配列、または配列に解決される式。
インデックス整数インデックス。負の値は末尾から数え、-1 は最後の要素です。

戻り値:指定されたインデックスの要素。範囲外、または配列が null の場合は null

▶ 例

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

// $arrayElemAt: 注文の先頭アイテムを取得
db.orders.aggregate([
  { $project: {
      firstItem: { $arrayElemAt: ['$items', 0] }
  } }
])

出力:

{ '_id': 1, 'firstItem': { 'sku': 'A01', 'qty': 2 } }
{ '_id': 2, 'firstItem': { 'sku': 'B02', 'qty': 1 } }

📌 注意事項

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

📚 関連チュートリアル

❓ よくある質問

Q$arrayElemAt で末尾の要素を取得するには?
Aインデックスに -1 を指定します。例: { $arrayElemAt: ['$arr', -1] } — 長さを事前に計算する必要はありません。
Q範囲外のインデックスはエラーになりますか?
Aいいえ — null を返します。デフォルト値を指定したい場合は $ifNull で包みます。
Q$arrayElemAt と $first の違いは?
A$first は常に先頭要素を取ります。$arrayElemAt は負のインデックスも含む任意の位置を取れるため、より柔軟です。
Web-Tutorial.com

Web-Tutorial 技術チーム

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

100%