Jak korzystać z operatora OR w MongoDB
Operator OR w MongoDB jest reprezentowany w formacie „$or”. „$or” służy do umieszczania wielokrotnych wyrażeń w nawiasach kwadratowych, na których wykonywana jest logiczna operacja OR. Używamy operatora $or w kolekcji MongoDB. Tworzymy kolekcję MongoDB zatytułowaną „Patients”. Kolekcja „Patients” jest wstawiana z wieloma dokumentami, na których wykonujemy operator $or. Następujące dokumenty są wstawiane do MongoDB poprzez wywołanie metody insertMany() :
db.Patients.insertMany ( [{
'Imię' : „Jennifer” ,
'Nazwisko' : „Jozue” ,
'Wiek' : 44 ,
'Numer telefonu' : 43400517 ,
'Spotkanie' : 'Dentysta' ,
'Opłaty' : 2000 ,
'Test' : [ „RTG” , 'Krew' , „Miazga” ]
} ,
{
'Imię' : 'Tomasz' ,
'Nazwisko' : „Steven” ,
'Wiek' : 74 ,
'Numer telefonu' : 39034694 ,
'Data spotkania' : 'Chirurg' ,
'Opłaty' : 6000 ,
'Test' : [ 'Obieralny' , 'PPT' ]
} ,
{
'Imię' : „Karol” ,
'Nazwisko' : „Daniel” ,
'Wiek' : 35 ,
'Numer telefonu' : 65712165 ,
'Spotkanie' : „lekarz kardiolog” ,
'Opłaty' : 2000 ,
'Test' : [ „CT” , „MRI” ]
} ,
{
'Imię' : „Michelle” ,
'Nazwisko' : 'Paweł' ,
'Wiek' : 51 ,
'Numer telefonu' : 54399288 ,
'Spotkanie' : 'Dermatolog' ,
'Opłaty' : 8000 ,
'Test' : [ „Biopsje skóry” , „Światło drewna” , „Zdrapywanie skóry” ]
} ,
{
'Imię' : 'Andrzej' ,
'Nazwisko' : 'Nocnik' ,
'Wiek' : 69 ,
'Numer telefonu' : 6108100 ,
'Spotkanie' : „lekarz kardiolog” ,
'Opłaty' : 7000 ,
'Test' : [ „EKG” , 'Glukoza we krwi' , 'Ultradźwięk' ]
}
] )
Dane wyjściowe wcześniej wstawionych dokumentów potwierdzają wartość „true” i dostarczają wartości „insertedIds” dla każdego dokumentu.
Przykład 1: Operator MongoDB $OR do dopasowania dokumentów
Podstawowe zapytanie operatora MongoDB $or jest tutaj zaimplementowane, co demonstruje działanie tego operatora w MongoDB. Tutaj definiujemy zapytanie za pomocą metody find(). Metoda find() jest dodatkowo określona za pomocą operatora $or. Operator $or pobiera dwa pola „Spotkanie” i „Opłaty”, którym przypisuje się wartości. Operator $or dopasowuje wartość pola i pobiera tylko te dokumenty, których wartości są dopasowane do wartości pola. Struktura zapytania operatora $or jest przedstawiona poniżej:
db.Patients.find ( { $lub : [ { Spotkanie: 'Dermatolog' } ,
{ Opłaty: 7000 } ] } ) .piękny ( )
Pobieramy dokumenty, których „Wizyta” jest u „Dermatologa” i których „Opłaty” wynoszą „7000”. Operator $or znajduje prawdziwe wyniki z obu wartości pól i zwraca dopasowane dokumenty w danych wyjściowych.
Przykład 2: Operator MongoDB $OR do dopasowania nieistniejących dokumentów
W poprzednim zapytaniu operatora $or pobraliśmy dopasowane dokumenty. Teraz pobieramy nieistniejący dokument z kolekcji „Pacjent”. Następujące zapytanie operatora $or pobiera dokument, którego „imię” to „Karol”, a „spotkanie” dotyczy „lekarza”. Operator $or dopasowuje te wartości pól w kolekcji „Patients” i generuje wyniki po dopasowaniu.
db.Patients.find ( { $lub : [ { 'Imię' : „Karol” } , { 'Spotkanie' : 'Lekarz' } ] } ) .piękny ( )
Operator $or ma jeden wynik prawdziwy, a drugi fałszywy. Ponieważ określamy „Wizyta” z wartością „Lekarz”, która nie pasuje do żadnego dokumentu w kolekcji „Pacjent”. Dlatego operator $or zwraca tylko dokument z dopasowanego pola, którym jest „Pacjent” jako dane wyjściowe.
Przykład 3: Operator MongoDB $OR z wieloma argumentami
W poprzednich zapytaniach operatora $lub podaliśmy dwa argumenty. Tutaj przekazujemy więcej niż dwa argumenty jako wyrażenie operatora $lub. Pobieramy dokument, który pasuje do dowolnej z podanych mu wartości pola „Wiek”. Wymóg operatora $or jest taki sam dla wielu argumentów, zgodnie z którymi jedno z wyrażeń powinno być prawdziwe. Zapytanie o wiele argumentów w operatorze $or wygląda następująco:
db.Patients.find ( { 'Spotkanie' : „lekarz kardiolog” , $lub : [ { 'Wiek' : dwadzieścia } , { 'Wiek' : 35 } , { 'Wiek' : 69 } ] } )Tam mamy dwa dopasowane wyniki, które otrzymujemy od operatora $or. Wartości „Wiek”, które wynoszą „35” i „69”, są porównywane z dokumentami „Pacjenci”, które są uzyskiwane przez operatora $lub i są wyświetlane na powłoce.
Przykład 4: MongoDB $OR Operator z agregacją
Metoda agregująca w MongoDB łączy rekordy w kolekcję. Dzięki temu mogą być wykorzystywane do różnych operacji. Wykonujemy operator $or w metodzie agregacji, która ocenia jedno lub więcej wyrażeń i zwraca wartość true, jeśli którekolwiek z nich ma wartość true. W przeciwnym razie stwierdzenie uznaje się za fałszywe.
Miejmy zapytanie operatora $lub agregacji, w którym najpierw wywołujemy metodę agregat(), która następnie wdraża $match i projekt $, który jest określony z wartością _id do dopasowania z dokumentu. Następnie ustawiamy pole „Wiek” na wartość „1”, ponieważ chcemy, aby tylko to pole było generowane ze wszystkich dokumentów. Następnie definiujemy atrybut „Wyniki”, który ma operację $or. Operator $or przyjmuje instrukcję warunkową $gt. Wyrażenie „$gt:[„$Age”, 69]” podaje wiek, którego wartość jest większa niż „69”. Wyniki dla tego wyrażenia są przekazywane do operatora $or, a operator $or zwraca dokument spełniający określony warunek.
db.Pacjenci.agregat ([
{ $dopasowanie : { _id: Identyfikator obiektu ( '6391c61a4c91e007fb4f0228' ) } } ,
{ $projekt : {
_id: Identyfikator obiektu ( '6391c61a4c91e007fb4f0227' ) ,
Wiek: jeden ,
Wynik: { $lub : [
{ $ gt : [ ' $Wiek ' , 69 ] }
] }
}
}
]
)
„Wiek” większy niż „69” to „74”, który jest wyświetlany w powłoce wyjściowej wraz z „Wynikami”, które mają wartość „prawdziwą”.
Przykład 5: Operator MongoDB $OR wywołuje warunki
Operator $or MongoDB jest operatorem logicznym. Możemy użyć tego operatora logicznego z operatorem warunkowym. Operator $or zwraca wyniki, gdy warunki są spełnione. Ponadto możemy wywołać więcej niż jeden warunek w operatorze $or, z którego jeden musi być prawdziwy. Tutaj mamy zapytanie operatora $or, które jest określone za pomocą dwóch różnych warunków. Pierwszy warunek to „{Opłaty:{$lt: 6000}}”, który zwraca dokument mniejszy niż wartość „Opłaty” wynosząca „6000”. Warunek {Opłaty:„$gt: 7000”} pobiera dokument, który jest większy niż wartość „Opłaty” wynosząca „7000”.
Operator $or podaje dopasowany dokument, gdy te warunki są spełnione. Następnie określamy nazwy pól, które są wyświetlane tylko wtedy, gdy operator $or poda dopasowany dokument.
db.Patients.find ( {$lub : [
{ Opłaty: { $lt : 6000 } } ,
{ Opłaty: { $ gt : 7000 } }
]
} , {
Imię: jeden ,
Opłaty: jeden
} )
Dane wyjściowe wyświetlają tylko pola „Imię” i „Opłaty” dla dopasowanych dokumentów.
Przykład 6: MongoDB $OR Operator bez argumentu
Wszystkie zaimplementowane zapytania z operatorem $or są przekazywane z wartością argumentu. Teraz definiujemy zapytanie operatora $or, które nie wprowadza żadnego argumentu. Gdy pusty argument $lub zapytanie operatora jest wykonywane, ocenia fałszywe wyniki. Podajemy zapytanie, w którym operacja $or jest przekazywana z pustym wyrażeniem.
db.Pacjenci.agregat ([
{ $dopasowanie : { _ID: { $w : [ Identyfikator obiektu ( '6391c61a4c91e007fb4f0228' ) ] } } } ,
{ $projekt : {
_id: Identyfikator obiektu ( '6391c61a4c91e007fb4f0227' ) ,
Wynik: { $lub : [ ] } }
}
]
)
W wyniku podania operatorowi $or pustego argumentu wyniki podają wartość fałszywą.
Przykład 7: Operator MongoDB $OR dopasowuje wartości tablicy
Wstawiamy tablicę „Test” w dokumentach, które mają różne wartości. Używamy tej tablicy dla operatora $or w celu sprawdzenia wyników. Operator $or w poniższym zapytaniu jest wywoływany wewnątrz metody find(). Operator $or przyjmuje tablicę „Test” jako wyrażenie. Tablica „Test” używa operatora $in do identyfikacji dokumentów, których wartości pól odpowiadają wartościom „MRI” i „CT” w tablicy.
db.Patients.find ( { $lub : [ { Test: { $w : [ „MRI” , „CT” ] } } ] } ) .piękny ( )Jeden dokument jest wyświetlany w powłoce, gdy wykonywany jest operator $lub query, który pokazuje, że pobrany dokument zawiera określone wartości tablicowe.
Wniosek
Ten artykuł MongoDB ilustruje użycie zapytania operatora MongoDB $or do wykonania operacji logicznej OR na tablicy zawierającej dwa lub więcej wyrażeń, a także do pobrania dokumentów pasujących do co najmniej jednego z wyrażeń. Operator $or jest odpytywany w powłoce MongoDB w celu wykonania różnych operacji. Operator $or jest używany w operatorach warunkowych jako wyrażenie i zwraca dokumenty na podstawie instrukcji warunkowych.