$indexOfArray (配列内の要素の位置を検索)
最終更新:2026-10-09
$indexOfArray (配列内の要素の位置を検索)
$indexOfArray は、配列内で最初に現れる値のインデックスを返します。見つからない場合は -1 を返します。タグが存在するかのチェックや、$arrayElemAt で読み取る要素の位置特定などに使われます。オプションの引数で検索範囲(開始・終了インデックス)を制限できます。文字列を対象とする $indexOfBytes / $indexOfCP の配列版に相当します。マッチングは厳密一致のため、オブジェクトは全体として一致する必要があります。
| カテゴリ | 配列 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $indexOfArray: [ <array>, <searchValue>, <start>, <end> ] }
⚙️ パラメータ
| 配列 | 検索する配列。 |
|---|---|
| 検索値 | 検索する値。 |
| 開始インデックス | 任意の開始インデックス(含む)。既定は 0。 |
| 終了インデックス | 任意の終了インデックス(含まない)。 |
戻り値:最初にマッチした位置のインデックス。見つからない場合は -1
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $indexOfArray: 'urgent' タグの位置を特定
db.tasks.aggregate([
{ $project: {
urgentPos: { $indexOfArray: ['$tags', 'urgent'] }
} }
])
出力:
{ '_id': 1, 'urgentPos': 2 }
{ '_id': 2, 'urgentPos': -1 }
📌 注意事項
- 最初の一致だけを返し、後続の重複は無視される
- 範囲は左閉右開: 開始は含み、終了は含まない
- 見つからない場合は -1 — 存在チェックに使える
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q要素が見つからないときは何を返しますか?
A-1 を返します。$ne で存在チェックができます。
Q検索範囲を制限できますか?
Aはい — 3 番目と 4 番目の引数が開始(含む)と終了(含まない)のインデックスです。
Qオブジェクト要素を検索するには?
Aオブジェクト全体を渡して厳密一致させます。例: { $indexOfArray: ['$arr', { a: 1 }] }。