$each (複数要素の指定)
最終更新:2026-10-09
$each (複数要素の指定)
$each は、$push と $addToSet に複数の値を渡すための修飾子です。`{ $push: { tags: { $each: ['a', 'b', 'c'] } } }` のように使います。$addToSet と組み合わせると、重複を排除しながら各値を追加します。単体では使えず、$push または $addToSet の中にネストする必要があります。$position、$slice、$sort と組み合わせて高度な配列管理もできます。
| カテゴリ | 更新修飾子 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $push: { <array field>: { $each: [ <value1>, <value2>, ... ] } } }
⚙️ パラメータ
| 配列フィールド | 追加先の配列フィールド。 |
|---|---|
| 値の配列 | 追加する要素のリスト。 |
戻り値:更新結果
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $each: 複数のタグを追加
db.articles.updateOne(
{ _id: 1 },
{ $push: { tags: { $each: ['mongodb', 'database'] } } }
)
// $addToSet と $each の併用は重複排除付き
db.articles.updateOne(
{ _id: 1 },
{ $addToSet: { tags: { $each: ['database', 'nosql'] } } }
)
出力:
// tags に 2 つの値が追加される。2 回目は database がスキップされ nosql が追加される
📌 注意事項
- $push または $addToSet の中にしかネストできない
- $addToSet と $each は値ごとに重複を排除する
- $position、$slice、$sort と組み合わせられる
🏷️ 関連タグ
💡 関連ケース
📚 関連チュートリアル
❓ よくある質問
Q$each は単体で使えますか?
Aいいえ。$push または $addToSet の中で使う必要があります。
Q$addToSet と $each の重複排除はどう動作しますか?
A各値が個別にチェックされ、既存の値はスキップされるため重複が残りません。
Q$each は $sort と組み合わせられますか?
Aはい。$push 内で $each の後に $sort を使うと、追加後にソートされます。