MongoDB VAGY operátor

Mongodb Vagy Operator



Különféle logikai lekérdezési operátoraink állnak rendelkezésre a MongoDB-ben, és ezek egyike a $or operátor. A MongoDB $or operátor egy logikai VAGY művelet végrehajtására szolgál egy olyan tömbön, amely két vagy több kifejezést tartalmaz, és csak azokat a dokumentumokat kéri le, amelyek egyeznek a tömbben lévő megadott kifejezések bármelyikével. A $or operátort arra használják, hogy egyetlen lekérdezésben több utasítást keressenek egyetlen egyező dokumentumkritériummal. A $or operátor több kulcs és érték kombinációját teszi lehetővé.

Az OR operátor használata a MongoDB-ben

Az OR operátor a MongoDB-ben „$or” formátumban van ábrázolva. A „$or” a többszörös kifejezések szögletes zárójelbe zárására szolgál, amelyen a logikai VAGY művelet végrehajtásra kerül. A MongoDB gyűjteményben a $or operátort használjuk. Létrehozzuk a MongoDB gyűjteményt, melynek neve „Patients”. A „Betegek” gyűjtemény bekerül azzal a több dokumentummal, amelyen a $or operátort végrehajtjuk. A következő dokumentumok kerülnek be a MongoDB-be az insertMany() metódus meghívásával:

db.Patients.insertMany ( [
{
'Keresztnév' : 'Jennifer' ,
'Vezetéknév' : 'Joshua' ,
'Kor' : 44 ,
'Telefonszám' : 43400517 ,
'Időpont egyeztetés' : 'Fogorvos' ,
'Díjak' : 2000 ,
'Teszt' : [ 'röntgen' , 'Vér' , 'Pulpal' ]
} ,
{
'Keresztnév' : 'Tamás' ,
'Vezetéknév' : 'István' ,
'Kor' : 74 ,
'Telefonszám' : 39034694 ,
'Kinevezés időpontja' : 'Sebész' ,
'Díjak' : 6000 ,
'Teszt' : [ 'választható' , 'PPT' ]
} ,
{
'Keresztnév' : 'Károly' ,
'Vezetéknév' : 'Daniel' ,
'Kor' : 35 ,
'Telefonszám' : 65712165 ,
'Időpont egyeztetés' : 'kardiológus orvos' ,
'Díjak' : 2000 ,
'Teszt' : [ 'CT' , 'MRI' ]
} ,
{
'Keresztnév' : 'Michelle' ,
'Vezetéknév' : 'Pál' ,
'Kor' : 51 ,
'Telefonszám' : 54399288 ,
'Időpont egyeztetés' : 'Bőrgyógyász' ,
'Díjak' : 8000 ,
'Teszt' : [ 'Bőrbiopszia' , 'Fa fény' , 'Bőrkaparás' ]
} ,

{
'Keresztnév' : 'András' ,
'Vezetéknév' : 'Jerry' ,
'Kor' : 69 ,
'Telefonszám' : 6108100 ,
'Időpont egyeztetés' : 'kardiológus orvos' ,
'Díjak' : 7000 ,
'Teszt' : [ 'EKG' , 'Vércukor' , 'Ultrahang' ]
}
] )

A korábban beszúrt dokumentumok kimenete elismeri az „igaz” értéket, és minden dokumentumhoz megadja az „insertedIds” értékeket.









1. példa: MongoDB $OR operátor a dokumentumok egyeztetéséhez

Itt van megvalósítva a MongoDB $or operátor alaplekérdezése, amely bemutatja ennek az operátornak a MongoDB-ben való működését. Itt a find() metódussal definiálunk egy lekérdezést. A find() metódus további megadása a $or operátorral történik. A $or operátor két mezőt foglal, az „Időpont” és a „Díjak” mezőt, amelyekhez az értékek hozzá vannak rendelve. A $or operátor megfelel a mező értékének, és csak azokat a dokumentumokat kéri le, amelyek értékei megegyeznek a mező értékeivel. A $or operátor lekérdezési struktúrája a következő:



db.Betegek.találd ( { $vagy : [ { Időpont egyeztetés: 'Bőrgyógyász' } ,
{ Díjak: 7000 } ] } ) .szép ( )

Lekérjük azokat a dokumentumokat, amelyek „Bőrgyógyászhoz” szólnak, a „Díjak” pedig „7000”. A $or operátor mindkét mezőértékből igaz eredményeket talál, és visszaadja az egyező dokumentumokat a kimenetben.





2. példa: MongoDB $OR operátor a nem létező dokumentumok egyeztetésére

A $or operátor előző lekérdezésében lekértük az egyező dokumentumokat. Most lekérjük a nem létező dokumentumot a „Páciens” gyűjteményből. A következő $or operátor lekérdezés azt a dokumentumot veszi, amelynek „Keresztneve” „Charles”, a „Találkozó” pedig az „Orvossal”. A $or operátor megfelelteti ezeket a mezőértékeket a „Patients” gyűjteményben, és az egyeztetés után generálja az eredményeket.



db.Betegek.találd ( { $vagy : [ { 'Keresztnév' : 'Károly' } , { 'Időpont egyeztetés' : 'Orvos' } ] } ) .szép ( )

A $or operátor egyik igaz, a másik hamis eredménye. Mivel az „Időpont”-ot „Orvos” értékkel adjuk meg, amely nem egyezik a „Páciens” gyűjtemény egyik dokumentumával sem. Emiatt a $or operátor csak az egyező mező dokumentumát adja vissza, amely a „Patient” kimenet.

3. példa: MongoDB $OR operátor több argumentummal

Az előző $or operátor lekérdezésekben két argumentumot adtunk meg. Itt kettőnél több argumentumot adunk át $or operátor kifejezésként. Lekérjük azt a dokumentumot, amelyik megfelel a neki adott „Kor” mezőértékeknek. A $or operátor követelménye ugyanaz a több argumentum esetében, hogy az egyik kifejezésnek igaznak kell lennie. A több argumentum lekérdezése a $or operátorban a következőképpen történik:

db.Betegek.találd ( { 'Időpont egyeztetés' : 'kardiológus orvos' , $vagy : [ { 'Kor' : húsz } , { 'Kor' : 35 } , { 'Kor' : 69 } ] } )

Itt van két egyező eredményünk, amelyeket a $or operátortól kapunk. A „35” és „69” „életkor” értékeket összehasonlítja a „Patients” dokumentumokkal, amelyeket a $or operátor kapott, és amelyek a shell-en jelennek meg.

4. példa: MongoDB $OR operátor aggregációval

A MongoDB összesítési módszere a rekordokat egy gyűjteménybe egyesíti. Ezért különféle műveletekhez használhatók. Az aggregációs módszerben végrehajtjuk a $or operátort, amely kiértékel egy vagy több kifejezést, és igazat ad vissza, ha bármelyik kiértékelése igaz. Ellenkező esetben az állítás hamisnak minősül.

Legyen a $or aggregation operátor lekérdezése, ahol először meghívjuk az aggregate() metódust, amely ezután telepíti a $match-et és a $projektet, amely a dokumentumban egyeztetendő _id értékkel van megadva. Ezután az „Életkor” mezőt „1” értékkel állítjuk be, mert csak azt akarjuk, hogy ez a mező az összes dokumentumból generálódjon. Ezt követően definiáljuk az „Eredmények” attribútumot, amely a $or művelettel rendelkezik. A $or operátor veszi a $gt feltételes utasítását. A „$gt:[„$Age”, 69]” kifejezés megadja azt az életkort, amelynek értéke nagyobb, mint „69”. A kifejezés eredményeit a rendszer a $or operátornak adja át, és a $or operátor visszaadja a megadott feltételnek megfelelő dokumentumot.

db.Patients.aggregate (
[
{ $match : { _id: ObjectId ( '6391c61a4c91e007fb4f0228' ) } } ,
{ $projekt : {
_id: ObjectId ( '6391c61a4c91e007fb4f0227' ) ,
Kor: egy ,
Eredmény: { $vagy : [
{ $gt : [ ' $Age ' , 69 ] }
] }
}
}
]
)

A „69”-nél nagyobb „életkor” a „74”, amely a kimeneti shellben jelenik meg az „igazi” értékkel rendelkező „Eredmények” mellett.

5. példa: A MongoDB $OR operátor meghívja a feltételeket

A MongoDB $or operátora egy logikai operátor. Ezt a logikai operátort használhatjuk a feltételes operátorral. A $or operátor visszaadja az eredményeket, ha a feltételek teljesülnek. Ezenkívül a $or operátorban egynél több feltételt is meghívhatunk, amelyek közül az egyiknek igaznak kell lennie. Itt van egy $or operátor lekérdezése, amely két különböző feltétellel van megadva. Az első feltétel a „{Charges:{$lt: 6000}}”, amely a „6000” „Charges” értéknél kisebb dokumentumot adja vissza. A {Charges:'$gt: 7000'} feltétel azt a dokumentumot kapja, amely nagyobb, mint a '7000' 'Charges' érték.

A $or operátor megadja a megfelelő dokumentumot, ha ezek a feltételek teljesülnek. Ezután megadjuk azoknak a mezőknek a nevét, amelyek csak akkor jelennek meg, ha a $or operátor megadja a megfelelő dokumentumot.

db.Betegek.találd ( {
$vagy : [
{ Díjak: { $lt : 6000 } } ,
{ Díjak: { $gt : 7000 } }
]
} , {
Keresztnév: egy ,
Díjak: egy
} )

A kimenet csak a „FirstName” és a „Charges” mezőket jeleníti meg az egyező dokumentumokhoz.

6. példa: MongoDB $OR operátor argumentum nélkül

A $or operátorral végrehajtott összes lekérdezés argumentumértékkel kerül átadásra. Most definiáljuk a $or operátor lekérdezést, amely nem ad meg argumentumot. Amikor az üres argumentum $vagy operátor lekérdezést végrehajtják, kiértékeli a hamis eredményeket. Adunk egy lekérdezést, ahol a $or műveletet üres kifejezéssel adjuk át.

db.Patients.aggregate (
[
{ $match : { _id: { $in : [ ObjectId ( '6391c61a4c91e007fb4f0228' ) ] } } } ,
{ $projekt : {
_id: ObjectId ( '6391c61a4c91e007fb4f0227' ) ,
Eredmény: { $vagy : [ ] } }
}
]
)

Ha a $or operátor üres argumentummal van ellátva, az eredmények hamis értéket adnak.

7. példa: A MongoDB $OR operátor megfelel a tömbértékeknek

A különböző értékű dokumentumokba beillesztjük a „Teszt” tömböt. Ezt a tömböt használjuk a $or operátorhoz az eredmények vizsgálatához. A következő lekérdezésben szereplő $or operátor a find() metóduson belül kerül meghívásra. A $or operátor a „Test” tömböt veszi kifejezésként. A „Test” tömb a $in operátort használja azon dokumentumok azonosítására, amelyek mezőértékei megegyeznek a tömb „MRI” és „CT” értékeivel.

db.Betegek.találd ( { $vagy : [ { Teszt: { $in : [ 'MRI' , 'CT' ] } } ] } ) .szép ( )

Egy dokumentum jelenik meg a shell-en, amikor a $or query operátor végrehajtódik, ami azt mutatja, hogy a letöltött dokumentum tartalmazza a megadott tömbértékeket.

Következtetés

Ez a MongoDB-cikk bemutatja a MongoDB $or operátor lekérdezés használatát a logikai VAGY műveletek végrehajtására egy két vagy több kifejezést tartalmazó tömbön, valamint a legalább egy kifejezésnek megfelelő dokumentumok lekérésére. A $or operátort lekérdezi a MongoDB shellben, hogy különböző műveleteket hajtson végre. A $or operátor a feltételes operátorokban kifejezésként használatos, és a feltételes utasítások alapján adja vissza a dokumentumokat.