$or (論理和)
最終更新:2026-10-09
$or (論理和)
$or は複数のクエリ条件を組み合わせ、いずれかを満たすドキュメントに一致します。`{ $or: [ { price: { $lt: 5 } }, { sale: true } ] }` のように使います。MongoDB は条件ごとにインデックスを使い、結果をマージできます。1 つのフィールドの複数値には $in が適しており、異なるフィールドのいずれか条件には $or を使います。
| カテゴリ | 論理 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $or: [ { <condition1> }, { <condition2> }, ... ] }
⚙️ パラメータ
| 条件の配列 | クエリ述語の配列。いずれか1つが成立すれば十分です。 |
|---|
戻り値:一致するドキュメントのカーソル
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $or: price が 5 未満 または セール中
db.products.find({
$or: [
{ price: { $lt: 5 } },
{ sale: true }
]
})
出力:
// どちらかの条件に一致する商品を返す(両方一致しても 1 回だけカウント)
📌 注意事項
- 1 つのフィールドの複数値には $or より $in を使う
- $or は他の論理演算子とネストできる。$and との構造に注意
- 各条件はインデックスを使え、結果はマージされる。フルスキャンは最後の手段
🏷️ 関連タグ
💡 関連ケース
📚 関連チュートリアル
❓ よくある質問
Q$or と $in の違いは?
A$in は 1 つのフィールドの複数値を判定し、$or は異なるフィールドを組み合わせます。同一フィールドの複数値なら $in を使います。
Q$or は複数の条件が一致すると重複して返しますか?
Aいいえ。複数の条件に一致しても、ドキュメントは最大 1 回だけ返されます。
Q$or の中に $and をネストできますか?
Aはい。$or の各要素には $and や $nor などを書けます。