$[] (全配列要素の更新)
最終更新:2026-10-09
$[] (全配列要素の更新)
$[] は、配列のすべての要素を更新する位置演算子です。`{ $set: { 'grades.$[]': 90 } }` で全グレードを 90 に設定します。arrayFilters と組み合わせると条件に一致する要素だけを更新し、使わなければすべてを更新します。$[] は更新文でのみ使えます — クエリでは $elemMatch を使います。
| カテゴリ | 更新修飾子 |
|---|---|
| MongoDB バージョン | 3.6+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ <update operator>: { '<array field>.$[]': <value> } }
⚙️ パラメータ
| 配列フィールド | 全体を更新する配列フィールド。 |
|---|---|
| 値 | すべての要素に適用される値。 |
戻り値:更新結果
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $[]: 全グレードを 90 に設定
db.students.updateOne(
{ _id: 1 },
{ $set: { 'grades.$[]': 90 } }
)
// ネストした配列でも $[] を使う
// 各レベルを指定
db.students.updateOne(
{ _id: 1 },
{ $set: { 'scores.$[].math': 100 } }
)
出力:
// 全グレードが 90 になる。2 つ目の例は各スコアの math を 100 に設定する
📌 注意事項
- arrayFilters を指定しない場合はすべての要素を更新する
- 条件付き更新には $[] ではなく $[identifier] と arrayFilters を使う
- ネストした配列ではレベルごとに $[] を書く
🏷️ 関連タグ
💡 関連ケース
📚 関連チュートリアル
❓ よくある質問
Q$[] と $ の違いは?
A$ は最初に一致した要素を更新します。$[] はすべての要素を更新します。
Q$[] は条件付きで使えますか?
A条件付きにするには $[identifier] と arrayFilters を使います。$[] は無条件にすべてを更新します。
Q$[] はクエリで使えますか?
Aいいえ。更新文専用です。