MongoDB ARBA operatorius

Mongodb Arba Operatorius



Mes turime skirtingus loginių užklausų operatorius, kurie yra prieinami MongoDB, ir vienas iš jų yra $or operatorius. Operatorius MongoDB $or naudojamas loginei ARBA operacijai įgyvendinti masyve, kuriame yra dvi ar daugiau išraiškų, ir gauti tik tuos dokumentus, kurie atitinka bet kurią iš nurodytų masyvo išraiškų. Operatorius $or naudojamas ieškant kelių teiginių vienoje užklausoje, naudojant tik vieną atitinkantį dokumento kriterijų. Operatorius $or palengvina kelių klavišų ir reikšmių derinimą.

Kaip naudoti OR operatorių MongoDB

OR operatorius MongoDB pateikiamas „$or“ formatu. „$or“ naudojamas laužtiniuose skliaustuose įtraukti kelias išraiškas, kuriose atliekama loginė ARBA operacija. MongoDB kolekcijoje naudojame operatorių $or. Mes kuriame MongoDB kolekciją, pavadintą „Pacientai“. Kolekcija „Pacientai“ įterpiama su keliais dokumentais, kuriuose atliekame operaciją $or. Šie dokumentai įterpiami į MongoDB naudojant insertMany() metodą:

db.Patients.insertMany ( [
{
'Pirmas vardas' : 'Dženifer' ,
'Pavardė' : 'Joshua' ,
'amžius' : 44 ,
'Telefono numeris' : 43400517 ,
'Paskyrimas' : 'stomatologas' ,
'Mokesčiai' : 2000 m ,
'testas' : [ 'rentgenas' , 'Kraujas' , 'Pulpal' ]
} ,
{
'Pirmas vardas' : 'Tomas' ,
'Pavardė' : 'Styvenas' ,
'amžius' : 74 ,
'Telefono numeris' : 39034694 ,
'Paskyrimo data' : 'Chirurgas' ,
'Mokesčiai' : 6000 ,
'testas' : [ 'pasirenkamasis' , 'PPT' ]
} ,
{
'Pirmas vardas' : 'Charles' ,
'Pavardė' : 'Danielis' ,
'amžius' : 35 ,
'Telefono numeris' : 65712165 ,
'Paskyrimas' : 'Gydytojas kardiologas' ,
'Mokesčiai' : 2000 m ,
'testas' : [ 'CT' , 'MRT' ]
} ,
{
'Pirmas vardas' : 'Mišelė' ,
'Pavardė' : 'Paulius' ,
'amžius' : 51 ,
'Telefono numeris' : 54399288 ,
'Paskyrimas' : 'Dermatologas' ,
'Mokesčiai' : 8000 ,
'testas' : [ 'Odos biopsijos' , 'Medžio šviesa' , 'Odos šveitimas' ]
} ,

{
'Pirmas vardas' : 'Andrius' ,
'Pavardė' : 'Džeris' ,
'amžius' : 69 ,
'Telefono numeris' : 6108100 ,
'Paskyrimas' : 'Gydytojas kardiologas' ,
'Mokesčiai' : 7000 ,
'testas' : [ 'EKG' , 'Kraujo gliukozė' , 'Ultragarsas' ]
}
] )

Anksčiau įterptų dokumentų išvestis patvirtina „true“ ir pateikia kiekvieno dokumento „insertedIds“ reikšmes.









1 pavyzdys: MongoDB $OR operatorius, kad suderintų dokumentus

Čia įdiegta pagrindinė MongoDB $or operatoriaus užklausa, kuri parodo šio operatoriaus veikimą MongoDB. Čia apibrėžiame užklausą su find() metodu. Find() metodas toliau nurodomas naudojant operatorių $or. Operatorius $or paima du laukus „Appointment“ ir „Charges“, kuriems priskiriamos reikšmės. Operatorius $or atitinka lauko reikšmę ir nuskaito tik tuos dokumentus, kurių reikšmės sutampa su lauko reikšmėmis. Operatoriaus $or užklausos struktūra pateikiama taip:



db.Pacientai.rasti ( { $arba : [ { Paskyrimas: 'Dermatologas' } ,
{ Mokesčiai: 7000 } ] } ) .graži ( )

Paimame dokumentus, kurių „Pasirašas“ pas „Dermatologą“, o „Mokesčiai“ yra „7000“. Operatorius $or randa tikrus rezultatus iš abiejų lauko reikšmių ir išvestyje pateikia suderintus dokumentus.





2 pavyzdys: MongoDB $OR operatorius, kad atitiktų neegzistuojančius dokumentus

Ankstesnėje operatoriaus $or užklausoje mes gavome suderintus dokumentus. Dabar mes gauname neegzistuojantį dokumentą iš kolekcijos „Pacientas“. Ši $or operatoriaus užklausa paima dokumentą, kurio „FirstName“ yra „Charles“, o „Paskyrimas“ yra su „gydytoju“. Operatorius $or atitinka šias laukų reikšmes rinkinyje „Pacientai“ ir sugeneruoja rezultatus po suderinimo.



db.Pacientai.rasti ( { $arba : [ { 'Pirmas vardas' : 'Charles' } , { 'Paskyrimas' : 'Gydytojas' } ] } ) .graži ( )

Operatorius $or turi vieną teisingą rezultatą, o kitas - klaidingą. Kadangi nurodome „Paskyrimas“ su „Gydytojo“ reikšme, kuri neatitinka nė vieno dokumento rinkinyje „Pacientas“. Štai kodėl operatorius $or kaip išvestį pateikia tik atitikusio lauko dokumentą, kuris yra „Pacientas“.

3 pavyzdys: MongoDB $OR operatorius su keliais argumentais

Ankstesnėse $or operatoriaus užklausose pateikėme du argumentus. Čia pateikiame daugiau nei du argumentus kaip $ arba operatoriaus išraišką. Gauname dokumentą, atitinkantį bet kurią jam pateiktą lauko „Amžius“ reikšmes. $or operatoriaus reikalavimas yra toks pat keliems argumentams, kad viena iš išraiškų turi būti teisinga. Kelių argumentų užklausa operatoriuje $or pateikiama taip:

db.Pacientai.rasti ( { 'Paskyrimas' : 'Gydytojas kardiologas' , $arba : [ { 'amžius' : dvidešimt } , { 'amžius' : 35 } , { 'amžius' : 69 } ] } )

Ten turime du suderintus rezultatus, gautus iš $or operatoriaus. „Amžiaus“ reikšmės, kurios yra „35“ ir „69“, lyginamos su „Pacientų“ dokumentais, kuriuos gauna $arba operatorius ir kurie rodomi apvalkale.

4 pavyzdys: MongoDB $OR operatorius su agregavimu

Apibendrinimo metodas MongoDB sujungia įrašus į kolekciją. Todėl jie gali būti naudojami įvairioms operacijoms. Operatorių $or atliekame agregavimo metodu, kuris įvertina vieną ar daugiau išraiškų ir grąžina true, jei kuri nors iš jų vertinama kaip tiesa. Priešingu atveju teiginys laikomas klaidingu.

Turėkime operatoriaus $or agregation užklausą, kur pirmiausia iškviečiame metodą aggregate(), kuris tada diegia $match ir $projektą, kuris nurodytas su _id reikšme, kurią reikia suderinti iš dokumento. Tada nustatome lauką „Amžius“ su reikšme „1“, nes norime, kad šis laukas būtų generuojamas tik iš visų dokumentų. Po to apibrėžiame atributą „Results“, kuris turi $or operaciją. Operatorius $or paima sąlyginį $gt teiginį. Išraiška „$gt:[„$Age“, 69]“ nurodo amžių, kurio reikšmė didesnė nei „69“. Šios išraiškos rezultatai perduodami operatoriui $or, o operatorius $or grąžina dokumentą, kuris atitinka nurodytą sąlygą.

db.Patients.agregate (
[
{ $match : { _id: Objekto ID ( '6391c61a4c91e007fb4f0228' ) } } ,
{ $projektas : {
_id: Objekto ID ( '6391c61a4c91e007fb4f0227' ) ,
Amžius: vienas ,
Rezultatas: { $arba : [
{ $gt : [ $Amžius , 69 ] }
] }
}
}
]
)

„Age“, kuris yra didesnis nei „69“, yra „74“, kuris rodomas išvesties apvalkale kartu su „Results“, kurio reikšmė yra „tikroji“.

5 pavyzdys: MongoDB $OR operatorius iškviečia sąlygas

MongoDB operatorius $or yra loginis operatorius. Šį loginį operatorių galime naudoti su sąlyginiu operatoriumi. Operatorius $or grąžina rezultatus, kai tenkinamos sąlygos. Be to, operatore $or galime iškviesti daugiau nei vieną sąlygą, iš kurių viena turi būti teisinga. Čia turime $or operatoriaus užklausą, kuri nurodoma dviem skirtingomis sąlygomis. Pirmoji sąlyga yra „{Charges:{$lt: 6000}}“, kuri grąžina dokumentą, kuris yra mažesnis už „Mokesčių“ reikšmę „6000“. Sąlyga {Charges:'$gt: 7000'} gauna dokumentą, kuris yra didesnis nei 'Charges' reikšmė '7000'.

Operatorius $or pateikia suderintą dokumentą, kai tenkinamos šios sąlygos. Tada nurodome laukų pavadinimus, kurie rodomi tik tada, kai operatorius $or pateikia atitinkamą dokumentą.

db.Pacientai.rasti ( {
$arba : [
{ Mokesčiai: { $ lt : 6000 } } ,
{ Mokesčiai: { $gt : 7000 } }
]
} , {
Pirmas vardas: vienas ,
Mokesčiai: vienas
} )

Išvestyje rodomi tik atitikusių dokumentų laukai „FirstName“ ir „Charges“.

6 pavyzdys: MongoDB $OR operatorius be argumentų

Visos įdiegtos užklausos su operatoriumi $or perduodamos su argumento reikšme. Dabar apibrėžiame $or operatoriaus užklausą, kuri neįveda jokių argumentų. Kai vykdoma tuščia argumento $arba operatoriaus užklausa, ji įvertina klaidingus rezultatus. Pateikiame užklausą, kur operacija $arba perduodama su tuščia išraiška.

db.Patients.agregate (
[
{ $match : { _id: { $in : [ Objekto ID ( '6391c61a4c91e007fb4f0228' ) ] } } } ,
{ $projektas : {
_id: Objekto ID ( '6391c61a4c91e007fb4f0227' ) ,
Rezultatas: { $arba : [ ] } }
}
]
)

Kai operatoriui $or pateikiamas tuščias argumentas, rezultatai nurodo klaidingą reikšmę.

7 pavyzdys: MongoDB $OR operatorius atitinka masyvo reikšmes

„Test“ masyvą įterpiame į dokumentus, kurių reikšmės skiriasi. Tą masyvą naudojame operatoriui $or rezultatams ištirti. Operatorius $or šioje užklausoje iškviečiamas naudojant find() metodą. Operatorius $or kaip išraišką laiko „Test“ masyvu. Masyvas „Test“ naudoja operatorių $in, kad nustatytų dokumentus, kurių lauko reikšmės atitinka masyvo „MRI“ ir „CT“ reikšmes.

db.Pacientai.rasti ( { $arba : [ { Testas: { $in : [ 'MRT' , 'CT' ] } } ] } ) .graži ( )

Vienas dokumentas rodomas apvalkale, kai vykdomas $or query operatorius, kuris rodo, kad nuskaitytame dokumente yra nurodytos masyvo reikšmės.

Išvada

Šis MongoDB straipsnis iliustruoja MongoDB $arba operatoriaus užklausos naudojimą loginėms ARBA operacijoms vykdyti masyve, kuriame yra dvi ar daugiau išraiškų, taip pat gauti dokumentus, atitinkančius bent vieną iš išraiškų. Operatoriaus $or užklausa MongoDB apvalkale atlieka įvairias operacijas. Operatorius $or naudojamas sąlyginiuose operatoriuose kaip išraiška ir pateikia dokumentus, pagrįstus sąlyginiais sakiniais.