МонгоДБ регуларни израз (Регек) са примерима

Преглед садржаја:

Anonim

Регуларни изрази се користе за подударање образаца, што је у основи за низове налаза у документима.

Понекад приликом преузимања докумената у колекцији можда нећете знати тачно коју вредност поља треба да тражите. Стога се могу користити регуларни изрази који помажу у проналажењу података на основу вредности претраживања које се подударају са узорком.

У овом упутству ћете научити -

  • Коришћење $ регек оператора за подударање образаца
  • Поклапање образаца са $ опцијама
  • Подударање обрасца без оператора регуларног израза
  • Преузимање последњих 'н' докумената из колекције

Коришћење $ регек оператора за подударање образаца

Оператор регуларног израза у МонгоДБ користи се за тражење одређених низова у колекцији. Следећи пример показује како се то може учинити.

Претпоставимо да имамо исту колекцију запослених која има називе поља „Емплоиееид“ и „ЕмплоиееНаме“. Претпоставимо такође да у својој колекцији имамо следеће документе.

Број запосленог име запосленог
22 НевМартин
2 Мохан
3 Јое
4 МоханР
100 Гуру99
6 Гуранг

Овде у доњем коду користили смо оператор регуларног израза за одређивање критеријума за претрагу.

db.Employee.find({EmployeeName : {$regex: "Gu" }}).forEach(printjson)

Објашњење кода:

  1. Овде желимо да пронађемо сва имена запослених која садрже знакове „Гу“. Дакле, ми специфицирамо $ регек оператора да дефинише критеријуме за претрагу 'Гу'
  2. Принтјсон се користи за бољи испис сваког документа који се враћа упитом.

Ако се наредба изврши успешно, приказаће се следећи излаз:

Излаз:

Резултат јасно показује да се враћају они документи у којима Име запосленог садржи знакове 'Гу'.

Ако претпоставимо да ваша колекција садржи следеће документе са додатним документом који је садржао име запосленог као „Гуру999“. Ако сте критеријум за претрагу унели као „Гуру99“, он би такође вратио документ који је садржао „Гуру999“. Али претпоставимо ако ово нисмо желели и само смо желели да вратимо документ са „Гуру99“. Тада то можемо учинити тачним подударањем обрасца. Да бисмо извршили тачно подударање узорка, користићемо знак и $. Додаћемо знак на почетку низа и $ на крају низа.

Број запосленог име запосленог
22 НевМартин
2 Мохан
3 Јое
4 МоханР
100 Гуру99
6 Гуранг
8 Гуру999

Следећи пример показује како се то може учинити.

db.Employee.find({EmployeeName : {$regex: "^Guru99$"}}).forEach(printjson) 

Објашњење кода:

  1. Овде у критеријумима за претрагу користимо знак и $. Се користи да би се осигурало да низ започиње са одређеним знаком, а $ да би се осигурало да се низ завршава одређеним знаком. Дакле, када се код изврши, дохватиће само низ са именом „Гуру99“.
  2. Принтјсон се користи за бољи испис сваког документа који се враћа упитом.

Ако се наредба изврши успешно, приказаће се следећи излаз:

Излаз:

У излазу је јасно видљиво да се преузима низ „Гуру99“.

Поклапање образаца са $ опцијама

Када користите оператер регуларног израза, можете такође пружити додатне опције помоћу кључне речи $ оптионс . На пример, претпоставимо да сте желели да пронађете све документе који су у имену запосленог имали „Гу“, без обзира на то да ли су велика и мала или велика. Ако је такав резултат пожељан, тада морамо да користимо $ опције са параметром осетљивости на мала и велика слова.

Следећи пример показује како се то може учинити.

Претпоставимо да имамо исту колекцију запослених која има називе поља „Емплоиееид“ и „ЕмплоиееНаме“.

Претпоставимо такође да у својој колекцији имамо следеће документе.

Број запосленог име запосленог
22 НевМартин
2 Мохан
3 Јое
4 МоханР
100 Гуру99
6 Гуранг
7 ГУРУ99

Сада, ако покренемо исти упит као у прошлој теми, никада не бисмо видели документ са „ГУРУ99“ у резултату. Да бисмо осигурали да ово долази у скупу резултата, морамо додати параметар $ оптионс "И".

db.Employee.find({EmployeeName:{$regex: "Gu",$options:'i'}}).forEach(printjson) 

Објашњење кода:

  1. Опција $ са параметром „И“ (што значи неосјетљивост на велика и мала слова) одређује да желимо извршити претрагу без обзира нађемо ли слова „Гу“ малим или великим словом.

Ако се наредба изврши успешно, приказаће се следећи излаз:

Излаз:

  1. Излаз јасно показује да, иако један документ има велика слова 'Гу', документ се и даље приказује у скупу резултата.

Подударање обрасца без оператора регуларног израза

Такође се може извршити подударање образаца без оператора регуларног израза. Следећи пример показује како се то може учинити.

db.Employee.find({EmployeeName: /Gu/'}).forEach(printjson)

Објашњење кода:

  1. Опције „//“ у основи значе да одредите своје критеријуме за претрагу унутар ових граничника. Стога прецизирамо / Гу / да поново пронађемо оне документе који у свом имену запосленог имају „Гу“.

Ако се наредба изврши успешно, приказаће се следећи излаз:

Излаз:

Резултат јасно показује да се враћају они документи у којима Име запосленог садржи знакове 'Гу'.

Преузимање последњих 'н' докумената из колекције

Постоје различити начини за добијање последњих н докумената у збирци.

Погледајмо један од начина кроз следеће кораке

Следећи пример показује како се то може учинити.

Претпоставимо да имамо исту колекцију запослених која има називе поља „Емплоиееид“ и „ЕмплоиееНаме“.

Претпоставимо такође да у нашој колекцији имамо следеће документе:

Број запосленог име запосленог
22 НевМартин
2 Мохан
3 Јое
4 МоханР
100 Гуру99
6 Гуранг
7 ГУРУ99
db.Employee.find().sort({_id:-1}).limit(2).forEach(printjson)

Објашњење кода:

1) Када постављате упите за документе, користите функцију сортирања за сортирање записа у обрнутом редоследу на основу вредности поља _ид у колекцији. -1 у основи означава сортирање докумената обрнутим или силазним редоследом, тако да последњи документ постаје први документ који се приказује.

2) Затим користите клаузулу ограничења да бисте само приказали број записа који желите. Овде смо поставили клаузулу о ограничењу (2), тако да ће се преузети последња два документа.

Ако се наредба изврши успешно, приказаће се следећи излаз:

Излаз:

Из резултата се јасно види да су приказана последња два документа у збирци. Отуда смо јасно показали да за преузимање последњих „н“ докумената у колекцији можемо прво да их сортирамо у опадајућем редоследу, а затим помоћу клаузуле ограничења вратимо „н“ потребан број докумената.

Напомена : Ако се претрага врши на низу који је већи од рецимо 38.000 знакова, неће се приказати прави резултати.

Резиме:

  • Подударање образаца може да постигне $ регек оператор. Овај оператор се може користити за проналажење одређених низова у колекцији.
  • Симбол и $ могу се користити за тачно тражење текста, при чему се користи да би се осигурало да низ почиње са одређеним знаком, а $ да би се осигурало да се низ завршава одређеним знаком.
  • Знак 'и' заједно са оператором $ регек може се користити за одређивање неосјетљивости на велика и мала слова, тако да се могу претраживати низови без обзира да ли су мала или велика.
  • Граничници // се такође могу користити за подударање обрасца.
  • Користите комбинацију функције сортирања и ограничења да бисте вратили последњих н докумената у колекцији. Функција сортирања може се користити за враћање докумената у опадајућем редоследу, након чега се клаузула ограничења може користити за ограничавање броја докумената који се враћају.