Kā lietot OR operatoru MongoDB
OR operators MongoDB ir attēlots formātā “$or”. “$or” tiek izmantots, lai kvadrātiekavās iekļautu vairākas izteiksmes, kurās tiek veikta loģiskā VAI darbība. MongoDB kolekcijā mēs izmantojam operatoru $or. Mēs izveidojam MongoDB kolekciju, kuras nosaukums ir 'Pacienti'. Kolekcija “Pacienti” tiek ievietota kopā ar vairākiem dokumentiem, kuriem mēs veicam $or operatoru. Šādi dokumenti tiek ievietoti MongoDB, izsaucot metodi insertMany():
db.Patients.insertMany ( [{
'Vārds' : 'Dženifera' ,
'Uzvārds' : 'Joshua' ,
'Vecums' : 44 ,
'Telefona numurs' : 43400517 ,
'Pieraksts' : 'Zobārsts' ,
'Maksas' : 2000. gads ,
'Pārbaude' : [ 'Rentgens' , 'Asinis' , 'Pulpal' ]
} ,
{
'Vārds' : 'Tomass' ,
'Uzvārds' : 'Stīvens' ,
'Vecums' : 74 ,
'Telefona numurs' : 39034694 ,
'Tikšanās datums' : 'Ķirurgs' ,
'Maksas' : 6000 ,
'Pārbaude' : [ 'Izvēles' , 'PPT' ]
} ,
{
'Vārds' : 'Čārlzs' ,
'Uzvārds' : 'Daniels' ,
'Vecums' : 35 ,
'Telefona numurs' : 65712165 ,
'Pieraksts' : 'Kardioloģijas ārsts' ,
'Maksas' : 2000. gads ,
'Pārbaude' : [ 'CT' , 'MRI' ]
} ,
{
'Vārds' : 'Mišela' ,
'Uzvārds' : 'Pāvils' ,
'Vecums' : 51 ,
'Telefona numurs' : 54399288 ,
'Pieraksts' : 'Dermatologs' ,
'Maksas' : 8000 ,
'Pārbaude' : [ 'Ādas biopsijas' , 'Koka gaisma' , 'Ādas skrāpēšana' ]
} ,
{
'Vārds' : 'Andrū' ,
'Uzvārds' : 'Džerijs' ,
'Vecums' : 69 ,
'Telefona numurs' : 6108100 ,
'Pieraksts' : 'Kardioloģijas ārsts' ,
'Maksas' : 7000 ,
'Pārbaude' : [ 'EKG' , 'Glikoze asinīs' , 'Ultraskaņa' ]
}
] )
Iepriekš ievietoto dokumentu izvade apstiprina “true” un nodrošina “insertedIds” vērtības katram dokumentam.
1. piemērs: MongoDB $OR operators, lai saskaņotu dokumentus
Šeit ir ieviests MongoDB $or operatora pamata vaicājums, kas parāda šī operatora darbību MongoDB. Šeit mēs definējam vaicājumu ar metodi find(). Find() metode tiek tālāk norādīta ar operatoru $or. Operators $or aizņem divus laukus “Appointment” un “Charges”, kuriem tiek piešķirtas vērtības. Operators $or atbilst lauka vērtībai un izgūst tikai tos dokumentus, kuru vērtības ir saskaņotas ar lauka vērtībām. Operatora $or vaicājuma struktūra ir sniegta šādi:
db.Pacienti.atrast ( { $vai : [ { Pieraksts: 'Dermatologs' } ,
{ Maksas: 7000 } ] } ) .smuki ( )
Mēs atnesam dokumentus, kuru “Pieraksts” ir pie “Dermatologa” un “Maksas” ir “7000”. Operators $or atrod patiesus rezultātus no abām lauka vērtībām un izvadā atgriež atbilstošos dokumentus.
2. piemērs: MongoDB $OR operators, lai saskaņotu neesošos dokumentus
Iepriekšējā operatora $or vaicājumā mēs ienesām atbilstošos dokumentus. Tagad mēs izgūstam neesošo dokumentu no kolekcijas “Pacients”. Šis $or operatora vaicājums ņem dokumentu, kura “FirstName” ir “Charles” un “Tikšanās” ir ar “Ārsta”. Operators $or atbilst šīm lauku vērtībām kolekcijā “Pacienti” un pēc saskaņošanas ģenerē rezultātus.
db.Pacienti.atrast ( { $vai : [ { 'Vārds' : 'Čārlzs' } , { 'Pieraksts' : 'Ārsts' } ] } ) .smuki ( )
Operatoram $or ir viens patiess rezultāts, bet otram ir nepatiess rezultāts. Tā kā mēs norādām “Tikšanās” ar vērtību “Ārsts”, kas neatbilst nevienam no kolekcijā “Pacients” esošajiem dokumentiem. Tāpēc operators $or kā izvadi atgriež tikai atbilstošā lauka dokumentu, kas ir “Pacients”.
3. piemērs: MongoDB $OR operators ar vairākiem argumentiem
Iepriekšējos $or operatora vaicājumos mēs sniedzām divus argumentus. Šeit mēs nododam vairāk nekā divus argumentus kā $ vai operatora izteiksmi. Mēs izgūstam dokumentu, kas atbilst kādai no tam piešķirtajām lauka “Vecums” vērtībām. $or operatora prasība ir vienāda vairākiem argumentiem, lai vienai no izteiksmēm būtu jābūt patiesai. Vairāku argumentu vaicājums operatorā $or tiek sniegts šādi:
db.Pacienti.atrast ( { 'Pieraksts' : 'Kardioloģijas ārsts' , $vai : [ { 'Vecums' : divdesmit } , { 'Vecums' : 35 } , { 'Vecums' : 69 } ] } )Tur mums ir divi atbilstoši rezultāti, kas iegūti no operatora $or. “Vecuma” vērtības, kas ir “35” un “69”, tiek salīdzinātas ar “Pacientu” dokumentiem, ko iegūst $ vai operators un kas tiek parādīti apvalkā.
4. piemērs: MongoDB $OR operators ar apkopošanu
MongoDB apkopošanas metode apvieno ierakstus kolekcijā. Tāpēc tos var izmantot dažādām operācijām. Mēs veicam operatoru $or agregācijas metodē, kas novērtē vienu vai vairākas izteiksmes un atgriež patiesu, ja kāda no tām novērtē kā patiesa. Pretējā gadījumā apgalvojums tiek uzskatīts par nepatiesu.
Iegūsim operatora $or agregation vaicājumu, kurā vispirms izsaucam aggregate() metodi, kas pēc tam izvieto $match un $projektu, kas ir norādīts ar _id vērtību, kas jāsaskaņo no dokumenta. Pēc tam mēs iestatām lauku “Vecums” ar vērtību “1”, jo mēs vēlamies, lai šis lauks tiktu ģenerēts tikai no visiem dokumentiem. Pēc tam mēs definējam atribūtu “Results”, kam ir $or darbība. Operators $or izmanto nosacīto paziņojumu par $gt. Izteiksme “$gt:[“$Age”, 69]” norāda vecumu, kura vērtība ir lielāka par “69”. Šīs izteiksmes rezultāti tiek nodoti operatoram $or, un operators $or atgriež dokumentu, kas atbilst norādītajam nosacījumam.
db.Pacienti.agregāts ([
{ $match : { _id: objekta ID ( '6391c61a4c91e007fb4f0228' ) } } ,
{ $projekts : {
_id: objekta ID ( '6391c61a4c91e007fb4f0227' ) ,
Vecums: viens ,
Rezultāts: { $vai : [
{ $gt : [ ' $Vecums ' , 69 ] }
] }
}
}
]
)
“Vecums”, kas ir lielāks par “69”, ir “74”, kas tiek parādīts izvades apvalkā kopā ar “Results”, kam ir “patiesā” vērtība.
5. piemērs: MongoDB $OR operators izsauc nosacījumus
MongoDB operators $ or ir loģisks operators. Mēs varam izmantot šo loģisko operatoru ar nosacījumu operatoru. Operators $or atgriež rezultātus, kad nosacījumi ir izpildīti. Turklāt operatorā $or varam izsaukt vairāk nekā vienu nosacījumu, no kuriem vienam ir jābūt patiesam. Šeit mums ir vaicājums $or operatoram, kas ir norādīts ar diviem dažādiem nosacījumiem. Pirmais nosacījums ir “{Charges:{$lt: 6000}}”, kas atgriež dokumentu, kas ir mazāks par “Charges” vērtību “6000”. Nosacījums {Charges:“$gt: 7000”} iegūst dokumentu, kas ir lielāks par “Charges” vērtību “7000”.
Operators $or sniedz atbilstošo dokumentu, kad šie nosacījumi ir izpildīti. Pēc tam mēs norādām to lauku nosaukumus, kas tiek rādīti tikai tad, kad operators $or piešķir atbilstošo dokumentu.
db.Pacienti.atrast ( {$vai : [
{ Maksas: { $ lt : 6000 } } ,
{ Maksas: { $gt : 7000 } }
]
} , {
Vārds: viens ,
Maksas: viens
} )
Izvadē tiek parādīti tikai atbilstošo dokumentu lauki “FirstName” un “Charges”.
6. piemērs: MongoDB $OR operators bez argumenta
Visi ieviestie vaicājumi ar operatoru $or tiek nodoti ar argumenta vērtību. Tagad mēs definējam $ vai operatora vaicājumu, kas neievada argumentu. Kad tiek izpildīts tukšs arguments $vai operatora vaicājums, tas novērtē nepatiesos rezultātus. Mēs sniedzam vaicājumu, kur operācija $or tiek nodota ar tukšu izteiksmi.
db.Pacienti.agregāts ([
{ $match : { _id: { $in : [ Objekta ID ( '6391c61a4c91e007fb4f0228' ) ] } } } ,
{ $projekts : {
_id: objekta ID ( '6391c61a4c91e007fb4f0227' ) ,
Rezultāts: { $vai : [ ] } }
}
]
)
Tā kā operatoram $or tiek pievienots tukšs arguments, rezultātos ir norādīta nepatiesa vērtība.
7. piemērs: MongoDB $OR operators atbilst masīva vērtībām
Mēs ievietojam masīvu “Test” dokumentos, kuriem ir dažādas vērtības. Mēs izmantojam šo masīvu operatoram $or, lai pārbaudītu rezultātus. Operators $or nākamajā vaicājumā tiek izsaukts find() metodes ietvaros. Operators $or izmanto masīvu “Test” kā izteiksmi. Masīvs “Test” izmanto operatoru $in, lai identificētu dokumentus, kuru lauka vērtības atbilst masīva “MRI” un “CT” vērtībām.
db.Pacienti.atrast ( { $vai : [ { Pārbaude: { $in : [ 'MRI' , 'CT' ] } } ] } ) .smuki ( )Viens dokuments tiek parādīts apvalkā, kad tiek izpildīts operators $ vai vaicājums, kas parāda, ka izgūtajā dokumentā ir norādītās masīva vērtības.
Secinājums
Šis MongoDB raksts ilustrē MongoDB $ vai operatora vaicājuma izmantošanu, lai izpildītu loģiskās VAI darbības masīvā, kas ietver divas vai vairākas izteiksmes, kā arī lai izgūtu dokumentus, kas atbilst vismaz vienai no izteiksmēm. Operators $or tiek vaicāts MongoDB apvalkā, lai veiktu dažādas darbības. Operators $or tiek izmantots nosacījuma operatoros kā izteiksme un atgriež dokumentus, pamatojoties uz nosacījumu priekšrakstiem.