Regulaaravaldisi kasutatakse mustrite sobitamiseks, mis on peamiselt mõeldud dokumentides leiduvate stringide jaoks.
Mõnikord ei pruugi te kollektsiooni dokumentide hankimisel täpselt teada, millist täpset välja väärtust otsida. Seega saab regulaarsete avaldiste abil aidata andmeid hankida mustritele vastavate otsinguväärtuste põhjal.
Selles õpetuses saate teada -
- Kasutades mustri sobitamiseks operaatorit $ regex
- Mustri sobitamine optsioonidega $
- Mustrite sobitamine ilma regex-operaatorita
- Kogust viimaste 'n' dokumentide toomine
Kasutades mustri sobitamiseks operaatorit $ regex
Regulaarset operaatorit MongoDB-s kasutatakse kollektsioonis konkreetsete stringide otsimiseks. Järgmine näide näitab, kuidas seda saab teha.
Oletame, et meil on sama töötajate kollektsioon, millel on väljade nimed "Employeeid" ja "EmployeeName". Oletame ka, et meie kollektsioonis on järgmised dokumendid.
Töötaja ID | Töötaja nimi |
22 | UusMartin |
2 | Mohan |
3 | Joe |
4 | MohanR |
100 | Guru99 |
6 | Gurang |
Siinses koodis oleme otsingukriteeriumide täpsustamiseks kasutanud regex-operaatorit.
db.Employee.find({EmployeeName : {$regex: "Gu" }}).forEach(printjson)
Koodi selgitus:
- Siit soovime leida kõik töötajate nimed, millel on märgid „Gu”. Seega määrame operaatori $ regex, et määratleda 'Gu' otsingukriteeriumid
- Printjsoni kasutatakse iga dokumendi printimiseks, mille päring tagastab paremal viisil.
Kui käsk käivitatakse edukalt, kuvatakse järgmine väljund:
Väljund:
Väljund näitab selgelt, et tagastatakse need dokumendid, kus töötaja nimi sisaldab tähti Gu.
Kui oletame, et teie kollektsioonil on järgmised dokumendid koos täiendava dokumendiga, mis sisaldas töötaja nime kui "Guru999". Kui sisestasite otsingukriteeriumiks "Guru99", tagastaks see ka dokumendi, millel oli "Guru999". Kuid oletame, et kui me seda ei tahtnud ja tahtsime dokumendi ainult "Guru99" tagastada. Siis saame seda teha mustri täpse sobitamise abil. Mustri täpse sobitamise jaoks kasutame märke ja $. Lisame märgi stringi algusesse ja $ stringi lõppu.
Töötaja ID | Töötaja nimi |
22 | UusMartin |
2 | Mohan |
3 | Joe |
4 | MohanR |
100 | Guru99 |
6 | Gurang |
8 | Guru999 |
Järgmine näide näitab, kuidas seda saab teha.
db.Employee.find({EmployeeName : {$regex: "^Guru99$"}}).forEach(printjson)
Koodi selgitus:
- Siin kasutame otsingukriteeriumides märke ja $. -I kasutatakse veendumaks, et string algab kindla tähemärgiga, ja $ -i abil tagatakse, et string lõpeb kindla märgiga. Nii et kui kood käivitatakse, tõmbab see ainult stringi nimega "Guru99".
- Printjsoni kasutatakse iga dokumendi printimiseks, mille päring tagastab paremal viisil.
Kui käsk käivitatakse edukalt, kuvatakse järgmine väljund:
Väljund:
Väljundis on selgelt näha, et tõmmatakse string "Guru99".
Mustri sobitamine optsioonidega $
Regex-operaatori kasutamisel saab pakkuda ka lisavõimalusi märksõna $ options abil . Oletame näiteks, et tahtsite leida kõik dokumendid, mille töötaja nimes oli kiri „Gu”, olenemata sellest, kas see oli tõstutundlik või tundetu. Kui sellist tulemust soovitakse, siis peame kasutama parameetreid $ ins ja tundetu tundetus.
Järgmine näide näitab, kuidas seda saab teha.
Oletame, et meil on sama töötajate kollektsioon, millel on väljade nimed "Employeeid" ja "EmployeeName".
Oletame ka, et meie kollektsioonis on järgmised dokumendid.
Töötaja ID | Töötaja nimi |
22 | UusMartin |
2 | Mohan |
3 | Joe |
4 | MohanR |
100 | Guru99 |
6 | Gurang |
7 | GURU99 |
Kui käivitame sama päringu nagu eelmises teemas, ei näeks me tulemuses kunagi dokumenti "GURU99". Selle tagamiseks tulemuste komplektis peame lisama parameetri $ options "I".
db.Employee.find({EmployeeName:{$regex: "Gu",$options:'i'}}).forEach(printjson)
Koodi selgitus:
- Parameetriga 'I' (mis tähendab juhtude tundetust) $ -valikud täpsustavad, et me tahame otsingu läbi viia ükskõik kui leiame väikeste või väikeste tähtedega tähed 'Gu'.
Kui käsk käivitatakse edukalt, kuvatakse järgmine väljund:
Väljund:
- Väljund näitab selgelt, et kuigi ühel dokumendil on suurtäht „Gu”, kuvatakse dokument siiski tulemuste komplektis.
Mustrite sobitamine ilma regex-operaatorita
Mustri sobitamist saab teha ka ilma regex-operaatorita. Järgmine näide näitab, kuidas seda saab teha.
db.Employee.find({EmployeeName: /Gu/'}).forEach(printjson)
Koodi selgitus:
- Valikud "//" tähendavad põhimõtteliselt otsingukriteeriumide täpsustamist nendes eraldajates. Seetõttu täpsustame / Gu /, et leida uuesti need dokumendid, mille EmployeeName'is on kiri "Gu".
Kui käsk käivitatakse edukalt, kuvatakse järgmine väljund:
Väljund:
Väljund näitab selgelt, et tagastatakse need dokumendid, kus töötaja nimi sisaldab tähti Gu.
Kogust viimaste 'n' dokumentide toomine
Kogus on viimase n dokumendi hankimiseks erinevaid viise.
Vaatame järgmiste sammude kaudu ühte viisi
Järgmine näide näitab, kuidas seda saab teha.
Oletame, et meil on sama töötajate kollektsioon, millel on väljade nimed "Employeeid" ja "EmployeeName".
Oletame ka, et meie kollektsioonis on järgmised dokumendid:
Töötaja ID | Töötaja nimi |
22 | UusMartin |
2 | Mohan |
3 | Joe |
4 | MohanR |
100 | Guru99 |
6 | Gurang |
7 | GURU99 |
db.Employee.find().sort({_id:-1}).limit(2).forEach(printjson)
Koodi selgitus:
1) Dokumentide pärimisel kasutage sortimisfunktsiooni, et sortida kirjed vastupidises järjekorras, lähtudes kogu _id välja väärtusest. -1 tähistab põhimõtteliselt dokumentide sortimist vastupidises või kahanevas järjekorras, nii et viimasest dokumendist saab esimene kuvatav dokument.
2) Seejärel kasutage piiranguklauslit, et kuvada lihtsalt soovitud kirjete arv. Siin oleme määranud piirilause (2), nii et see tõmbab kaks viimast dokumenti.
Kui käsk käivitatakse edukalt, kuvatakse järgmine väljund:
Väljund:
Väljund näitab selgelt, et kuvatakse kollektsiooni kaks viimast dokumenti. Seetõttu oleme selgelt näidanud, et kollektsiooni viimaste „n” dokumentide toomiseks saame dokumendid esmalt sortida kahanevas järjekorras ja seejärel kasutada piiranguklauslit, et tagastada vajalik arv dokumente „n”.
Märkus . Kui otsing viiakse läbi stringil, mis on suurem kui näiteks 38 000 tähemärki, ei kuva see õigeid tulemusi.
Kokkuvõte:
- Mustri sobitamise saab saavutada operaator $ regex. Seda operaatorit saab kasutada kollektsiooni teatud stringide leidmiseks.
- Sümbolit ja $ saab kasutada täpse tekstiotsingu jaoks, kusjuures abil saab veenduda, et string algab kindla tähemärgiga, ja $, mida kasutatakse tagamaks, et string lõpeb kindla märgiga.
- Tähte 'i' koos operaatoriga $ regex saab kasutada tõstutundetuse määramiseks, nii et stringi saab otsida kas väikeste või väikeste tähtedega.
- Piirijaid // saab kasutada ka mustrite sobitamiseks.
- Kollektsiooni viimase n dokumendi tagastamiseks kasutage sorteerimise ja piiramise funktsiooni kombinatsiooni. Sorteerimisfunktsiooni saab kasutada dokumentide tagastamiseks kahanevas järjekorras, mille järel saab piiramisklauslit kasutada tagastatavate dokumentide arvu piiramiseks.