MongoDB で OR 演算子を使用する方法
MongoDB の OR 演算子は、「$or」形式で表されます。 「$or」は、論理 OR 演算が実行される角括弧内の複数の式を囲むために使用されます。 MongoDB コレクションで $or 演算子を使用します。 「Patients」という名前の MongoDB コレクションを作成します。 「Patients」コレクションは、$or 演算子を実行する複数のドキュメントと共に挿入されます。次のドキュメントは、insertMany() メソッドを呼び出すことによって MongoDB に挿入されます。
db.Patients.insertMany ( [{
'ファーストネーム' : 「ジェニファー」 、
'苗字' : 'Joshua' 、
'年' : 44 、
'電話番号' : 43400517 、
'予定' : '歯医者' 、
「料金」 : 2000年 、
'テスト' : [ 「レントゲン」 、 '血' 、 「パルパル」 ]
} 、
{
'ファーストネーム' : 「トーマス」 、
'苗字' : 「スティーブン」 、
'年' : 74 、
'電話番号' : 39034694 、
'予約日' : '外科医' 、
「料金」 : 6000 、
'テスト' : [ 「選択科目」 、 「PPT」 ]
} 、
{
'ファーストネーム' : 「チャールズ」 、
'苗字' : 「ダニエル」 、
'年' : 35 、
'電話番号' : 65712165 、
'予定' : 「循環器内科医」 、
「料金」 : 2000年 、
'テスト' : [ 「CT」 、 「MRI」 ]
} 、
{
'ファーストネーム' : 「ミッシェル」 、
'苗字' : 「ポール」 、
'年' : 51 、
'電話番号' : 54399288 、
'予定' : 「皮膚科」 、
「料金」 : 8000 、
'テスト' : [ 「皮膚生検」 、 「ウッドライト」 、 「皮むき」 ]
} 、
{
'ファーストネーム' : 「アンドリュー」 、
'苗字' : 「ジェリー」 、
'年' : 69 、
'電話番号' : 6108100 、
'予定' : 「循環器内科医」 、
「料金」 : 7000 、
'テスト' : [ 「心電図」 、 「血糖」 、 「超音波」 ]
}
] )
以前に挿入されたドキュメントの出力は、「true」を認識し、各ドキュメントの「insertedIds」値を提供します。
例 1: ドキュメントを照合する MongoDB $OR 演算子
ここでは、MongoDB の $or 演算子の基本的なクエリが実装されており、MongoDB でのこの演算子の動作を示しています。ここでは、find() メソッドでクエリを定義します。 find() メソッドは、さらに $or 演算子で指定されます。 $or 演算子は、「予定」と「料金」の 2 つのフィールドを取り、値が割り当てられます。 $or 演算子はフィールド値と一致し、値がフィールド値と一致するドキュメントのみを取得します。 $or 演算子のクエリ構造を次に示します。
デシベル.患者.検索 ( { $または : [ { 予定: 「皮膚科」 } 、
{ 料金: 7000 } ] } ) 。かわいい ( )
「予約」が「皮膚科」で、「料金」が「7000」のドキュメントを取得します。 $or 演算子は、両方のフィールド値から真の結果を見つけ、一致したドキュメントを出力で返します。
例 2: 存在しないドキュメントを照合する MongoDB $OR 演算子
$or 演算子の前のクエリでは、一致したドキュメントを取得しました。ここで、「Patient」コレクションから存在しないドキュメントを取得します。次の $or 演算子クエリは、'FirstName' が 'Charles' で、'Appointment' が 'Physician' のドキュメントを取得します。 $or 演算子は、'Patients' コレクション内のこれらのフィールド値を照合し、照合後に結果を生成します。
デシベル.患者.検索 ( { $または : [ { 'ファーストネーム' : 「チャールズ」 } 、 { '予定' : '医師' } ] } ) 。かわいい ( )
$or 演算子には、1 つの真の結果があり、もう 1 つの結果は偽です。 「予約」を「医師」の値で指定すると、「患者」コレクションのどのドキュメントとも一致しません。そのため、$or 演算子は一致したフィールドのドキュメントである「Patient」のみを出力として返します。
例 3: 複数の引数を持つ MongoDB $OR 演算子
前の $or 演算子クエリで 2 つの引数を指定しました。ここでは、$or 演算子式として 3 つ以上の引数を渡します。与えられた「Age」フィールド値のいずれかに一致するドキュメントを取得します。 $or 演算子の要件は、式の 1 つが true でなければならない複数の引数についても同じです。 $or 演算子の複数の引数に対するクエリは、次のように指定されます。
デシベル.患者.検索 ( { '予定' : 「循環器内科医」 、 $または : [ { '年' : 20 } 、 { '年' : 35 } 、 { '年' : 69 } ] } )そこでは、$or 演算子から取得された 2 つの一致した結果があります。 「Age」の値「35」と「69」は、$or 演算子によって取得され、シェルに表示される「Patients」ドキュメントと比較されます。
例 4: 集計を使用した MongoDB $OR 演算子
MongoDB の集計メソッドは、レコードをコレクションに結合します。したがって、それらはさまざまな操作に使用できます。集約メソッドで $or 演算子を実行します。これは、1 つ以上の式を評価し、それらのいずれかが true と評価された場合に true を返します。それ以外の場合、ステートメントは偽と見なされます。
$or 集計演算子クエリを使用して、最初に aggregate() メソッドを呼び出し、次に $match と、ドキュメントから一致する _id 値で指定された $project をデプロイします。次に、「Age」フィールドの値を「1」に設定します。これは、すべてのドキュメントからこのフィールドのみを生成するためです。その後、$or 操作を持つ「Results」属性を定義します。 $or 演算子は、$gt の条件ステートメントを取ります。 「$gt:[“$Age”, 69]」式は、値が「69」より大きい年齢を示します。この式の結果は $or 演算子に渡され、$or 演算子は指定された条件を満たすドキュメントを返します。
デシベル.患者.集計 ([
{ $マッチ : { _id: オブジェクト ID ( '6391c61a4c91e007fb4f0228' ) } } 、
{ $プロジェクト : {
_id: オブジェクト ID ( '6391c61a4c91e007fb4f0227' ) 、
年: 1 、
結果: { $または : [
{ $gt : [ ' $年齢 ' 、 69 ] }
] }
}
}
]
)
「69」より大きい「Age」は「74」であり、「true」値を持つ「Results」とともに出力シェルに表示されます。
例 5: MongoDB $OR 演算子が条件を呼び出す
MongoDB の $or 演算子は論理演算子です。この論理演算子を条件演算子と一緒に使用できます。 $or 演算子は、条件が満たされたときに結果を返します。さらに、$or 演算子で複数の条件を呼び出すことができ、そのうちの 1 つが真でなければなりません。ここでは、2 つの異なる条件で指定された $or 演算子のクエリがあります。最初の条件は「{Charges:{$lt: 6000}}」で、「Charges」の値「6000」未満のドキュメントを返します。 {Charges:'$gt: 7000'} 条件は、「Charges」の値「7000」より大きいドキュメントを取得します。
これらの条件が満たされると、$or 演算子は一致したドキュメントを返します。次に、$or 演算子が一致するドキュメントを指定した場合にのみ表示されるフィールドの名前を指定します。
デシベル.患者.検索 ( {$または : [
{ 料金: { $lt : 6000 } } 、
{ 料金: { $gt : 7000 } }
]
} 、 {
ファーストネーム: 1 、
料金: 1
} )
出力には、一致したドキュメントの「FirstName」フィールドと「Charges」フィールドのみが表示されます。
例 6: 引数のない MongoDB $OR 演算子
$or 演算子を使用して実装されたすべてのクエリは、引数値とともに渡されます。ここで、引数を入力しない $or 演算子クエリを定義します。空の引数 $or operator クエリが実行されると、偽の結果が評価されます。 $or 操作が空の式で渡されるクエリを指定します。
デシベル.患者.集計 ([
{ $マッチ : { _id: { $in : [ オブジェクト ID ( '6391c61a4c91e007fb4f0228' ) ] } } } 、
{ $プロジェクト : {
_id: オブジェクト ID ( '6391c61a4c91e007fb4f0227' ) 、
結果: { $または : [ ] } }
}
]
)
$or 演算子に空の引数が指定された結果、結果は偽の値を示します。
例 7: MongoDB $OR 演算子が配列値と一致する
異なる値を持つドキュメントに「Test」配列を挿入します。その配列を $or 演算子に使用して、結果を調べます。次のクエリの $or 演算子は、find() メソッド内で呼び出されます。 $or 演算子は、「Test」配列を式として受け取ります。 「Test」配列は $in 演算子を使用して、フィールド値が配列内の「MRI」および「CT」値と一致するドキュメントを識別します。
デシベル.患者.検索 ( { $または : [ { テスト: { $in : [ 「MRI」 、 「CT」 ] } } ] } ) 。かわいい ( )$or クエリ演算子が実行されると、1 つのドキュメントがシェルに表示され、取得されたドキュメントに指定された配列値が含まれていることが示されます。
結論
この MongoDB 記事では、MongoDB の $or 演算子クエリを使用して、2 つ以上の式を含む配列に対して論理 OR 演算を実行し、少なくとも 1 つの式に一致するドキュメントを取得する方法について説明します。 $or 演算子は、さまざまな操作を実行するために MongoDB シェルで照会されます。 $or 演算子は条件演算子で式として使用され、条件ステートメントに基づいてドキュメントを返します。