公式ドキュメント自体から
以下のようなドキュメントがある場合:
[
{
"price": 100
},
{
"price": 200
},
{
"price": 300
},
{
"price": 400
},
{
"price": 500
}
]
priceのドキュメントを取得したい場合 100に等しい または500 、:
db.collection.find({ price: { $in: [ 100, 500 ] } })
上記のようにすることで、クエリはシンプルでクリーンになります。 $orを使用することもできます $inの代わりに しかし、なぜあなたは省略表記を失い、同じフィールドのオブジェクトを何度も追加することによってクエリをかさばるように見せようとするのでしょうか?
デフォルトでは、論理的なORを実行する場合 2つの異なる演算子では、$orを使用します 、ただし、$orを使用する場合 同じフィールドで:
db.collection.find({ $or: [ { price: { $lt: 200 } }, { price: { $gt: 400 } } ] })
上記のように、同じフィールドに一致する複数の異なる条件がある場合は、それを使用します。
これらの2つのクエリは、実行すると同じ結果になりますが、$inを使用すると -入力値が直線の場合、または入力値がpriceの値と完全に一致する文字列またはその他のタイプの場合 ドキュメントのフィールドですが、$orを使用する場合 同じフィールドでさまざまな条件をチェックしています。
テスト: mongoplayground