公式ドキュメント自体から
以下のようなドキュメントがある場合:
[
{
"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