$set (フィールド設定)
最終更新:2026-10-09
$set (フィールド設定)
$set は $addFields の別名です: 各ドキュメントにフィールドを追加・上書きし、他はすべて保持します。パイプライン途中で計算値や定数、式の結果を付け加えるのに使います。MongoDB 3.4 で導入され、$addFields と完全に相互互換です。なお、$set 更新演算子と同じ名前なので注意してください。
| カテゴリ | コアステージ |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $set: { <field>: <expression>, ... } }
⚙️ パラメータ
| フィールド | フィールド名を集計式または定数値にマッピングします。 |
|---|
戻り値:フィールドを設定したドキュメントストリーム
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $set: 定数ステータスを追加し、amount の型を変換
db.orders.aggregate([
{ $set: { status: 'PENDING', amount: { $toDouble: '$amount' } } }
])
出力:
// 元のフィールドは保持され、status は定数、amount は double に変換される
📌 注意事項
- $set は $addFields と完全に同じ
- _id と指定外のフィールドは変更されない
- 同じステージ内で設定したフィールドは参照できない
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q$set と $addFields はどちらを使うべきですか?
Aどちらでも動きます。$addFields の方が一般的で、$set は更新演算子と混同されることがあります。
Q$set で埋め込みフィールドを設定できますか?
Aはい。ドットパスで指定します。例: { $set: { 'addr.city': 'SH' } }
Q$set はフィールドを削除できますか?
Aいいえ。追加・上書きのみで、削除には $unset を使います。