$all (すべて含む)
最終更新:2026-10-09
$all (すべて含む)
$all は、配列フィールドが指定配列のすべての要素を含むドキュメントに一致します。`{ tags: { $all: ['mongodb', 'database'] } }` は tags が両方の値を順序を問わず含むことを要求します。$in(いずれか一致)と違い、$all はすべての値を要求します。必須タグの絞り込みに最適です。
| カテゴリ | 配列 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ <field>: { $all: [ <value1>, <value2>, ... ] } }
⚙️ パラメータ
| フィールド | マッチ対象の配列フィールド。 |
|---|---|
| 値の配列 | すべて存在する必要がある値のリスト。 |
戻り値:一致するドキュメントのカーソル
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $all: tags に mongodb と database の両方を含む
db.articles.find({ tags: { $all: ['mongodb', 'database'] } })
// 比較用の $in: どちらかのタグに一致
db.articles.find({ tags: { $in: ['mongodb', 'database'] } })
出力:
// 1 つ目のクエリは両方のタグを要求し、2 つ目はどちらかに一致
📌 注意事項
- 順序は関係ない: ['mongodb', 'database'] は逆順と同じ
- $all は全要素必須、$in はいずれか一致
- $all: [] はすべてのドキュメントに一致する(フィールドが存在しないものも含む)
🏷️ 関連タグ
💡 関連ケース
📚 関連チュートリアル
❓ よくある質問
Q$all と $in の違いは?
A$in はいずれかの値が現れれば一致します。$all はリストのすべての値が存在することを要求します。
Q$all は配列以外のフィールドでも動きますか?
A配列以外のフィールドでは $all は $eq のように振る舞います(単一値の比較)。
Q空の $all 配列はどうなりますか?
A$all: [] はすべてのドキュメントに一致します。フィールドが存在しないものも含みます。