{"id":95148,"date":"2020-09-25T19:43:09","date_gmt":"2020-09-25T17:43:09","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/14-veshhej-kotorye-ya-hotel-by-znat-pered-nachalom-raboty-s-mongodb"},"modified":"2020-09-25T19:43:09","modified_gmt":"2020-09-25T17:43:09","slug":"14-veshhej-kotorye-ya-hotel-by-znat-pered-nachalom-raboty-s-mongodb","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/14-veshhej-kotorye-ya-hotel-by-znat-pered-nachalom-raboty-s-mongodb","title":{"rendered":"14 vec\u00ed, ktor\u00e9 by som chcel vedie\u0165 pred za\u010dat\u00edm pr\u00e1ce s MongoDB","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b><i>Preklad \u010dl\u00e1nku bol pripraven\u00fd v predstihu pred za\u010diatkom kurzu <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/ZRL1\/\">Nerela\u010dn\u00e9 datab\u00e1zy<\/a><\/noindex>.<\/i><\/b><\/p>\n<p><img decoding=\"async\" alt=\"14 vec\u00ed, ktor\u00e9 by som chcel vedie\u0165 pred za\u010dat\u00edm pr\u00e1ce s MongoDB\" src=\"\/wp-content\/uploads\/2020\/09\/9b4979be27e0090543b28150d90fa8df.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Hlavn\u00e9 body:<\/p>\n<ul>\n<li>Je ve\u013emi d\u00f4le\u017eit\u00e9 vypracova\u0165 sch\u00e9mu, aj ke\u010f v MongoDB nie je povinn\u00e1.<\/li>\n<li>Rovnako musia by\u0165 indexy prisp\u00f4soben\u00e9 va\u0161ej sch\u00e9me a pr\u00edstupov\u00fdm vzorcom. <\/li>\n<li>Vyhnite sa pou\u017e\u00edvaniu ve\u013ek\u00fdch objektov a rozsiahlych pol\u00ed.<\/li>\n<li>Bu\u010fte opatrn\u00ed s nastaveniami MongoDB, najm\u00e4 pokia\u013e ide o bezpe\u010dnos\u0165 a spo\u013eahlivos\u0165.<\/li>\n<li>V MongoDB nie je optimaliz\u00e1tor dotazov, preto by ste mali by\u0165 opatrn\u00ed pri vykon\u00e1van\u00ed dotazovac\u00edch oper\u00e1ci\u00ed.<\/li>\n<\/ul>\n<p>\nDlho pracujem s datab\u00e1zami, ale ned\u00e1vno som objavil MongoDB. Existuje nieko\u013eko vec\u00ed, ktor\u00e9 by som chcel vedie\u0165 pred za\u010diatkom pr\u00e1ce s \u0148ou. Ke\u010f m\u00e1 \u010dlovek u\u017e sk\u00fasenosti v ur\u010ditej oblasti, existuj\u00fa ur\u010dit\u00e9 predsudky o tom, \u010do s\u00fa datab\u00e1zy a \u010do robia. V n\u00e1deji, \u017ee u\u013eah\u010d\u00edm pochopenie in\u00fdm, predstavujem zoznam be\u017en\u00fdch ch\u00fdb.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Vytvorenie servera MongoDB bez autentifik\u00e1cie<\/h3>\n<p>\nBohu\u017eia\u013e, MongoDB je predvolene in\u0161talovan\u00e1 bez autentifik\u00e1cie. Pre pracovn\u00fa stanicu, ku ktorej sa pristupuje lok\u00e1lne, je tak\u00e9to nastavenie akceptovate\u013en\u00e9. Ale ke\u010f\u017ee MongoDB je syst\u00e9m s viacer\u00fdmi pou\u017e\u00edvate\u013emi, ktor\u00fd r\u00e1d pou\u017e\u00edva ve\u013ek\u00e9 mno\u017estv\u00e1 pam\u00e4te, bolo by lep\u0161ie nain\u0161talova\u0165 ju na server s maxim\u00e1lnym mo\u017en\u00fdm mno\u017estvom RAM vo va\u0161ich podmienkach, aj ke\u010f ju pl\u00e1nujete pou\u017e\u00edva\u0165 len na v\u00fdvoj. In\u0161tal\u00e1cia na server cez predvolen\u00fd port m\u00f4\u017ee by\u0165 problematick\u00e1, najm\u00e4 ak je mo\u017en\u00e9 vykona\u0165 ak\u00fdko\u013evek k\u00f3d v jazyku JavaScript v dotaze (napr\u00edklad, <code>$where<\/code> ako n\u00e1pad pre <noindex><a rel=\"nofollow\" href=\"https:\/\/lockmedown.com\/securing-node-js-mongodb-security-injection-attacks\/\">injekciu<\/a><\/noindex>). <\/p>\n<p>Existuje nieko\u013eko met\u00f3d autentifik\u00e1cie, ale najjednoduch\u0161ie je nastavi\u0165 ID\/heslo pre pou\u017e\u00edvate\u013ea. Vyu\u017eite tento n\u00e1pad, k\u00fdm prem\u00fd\u0161\u013eate nad zlo\u017eit\u00fdmi autentifika\u010dn\u00fdmi met\u00f3dami. <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/core\/security-ldap-external\/\">LDAP<\/a><\/noindex>Pokia\u013e ide o bezpe\u010dnos\u0165, MongoDB by sa mala neust\u00e1le aktualizova\u0165 a protokoly by sa mali pravidelne kontrolova\u0165 na neautorizovan\u00fd pr\u00edstup. Napr\u00edklad, r\u00e1d si vyberiem in\u00fd port ako predvolen\u00fd.<\/p>\n<h3>Nezabudnite pripevni\u0165 povrch \u00fatoku k MongoDB<\/h3>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/administration\/security-checklist\/\">Kontroln\u00fd zoznam zabezpe\u010denia MongoDB<\/a><\/noindex> obsahuje dobr\u00e9 rady na sn\u00ed\u017eenie rizika prieniku do siete a \u00faniku d\u00e1t. Je \u013eahk\u00e9 m\u00e1vnu\u0165 rukou a poveda\u0165, \u017ee server pre v\u00fdvoj nevy\u017eaduje vysok\u00fa \u00farove\u0148 zabezpe\u010denia. Av\u0161ak v\u0161etko nie je tak jednoduch\u00e9 a to plat\u00ed pre v\u0161etky servery MongoDB. Najm\u00e4 ak neexistuje presved\u010div\u00fd d\u00f4vod na pou\u017e\u00edvanie <code><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/reference\/command\/mapReduce\/#dbcmd.mapReduce\">mapReduce<\/a><\/noindex><\/code>, <code><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/reference\/command\/group\/#dbcmd.group\">skupina<\/a><\/noindex><\/code> alebo <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/reference\/operator\/query\/where\/#op._S_where\">$where<\/a><\/noindex>, je potrebn\u00e9 zak\u00e1za\u0165 pou\u017e\u00edvanie svojho vlastn\u00e9ho k\u00f3du v JavaScripte \u00fapravou konfigura\u010dn\u00e9ho s\u00faboru <code><noindex><a rel=\"nofollow\" href=\"https:\/\/lockmedown.com\/securing-node-js-mongodb-security-injection-attacks\/\">javascriptEnabled:false<\/a><\/noindex><\/code>. Ke\u010f\u017ee v \u0161tandardnej MongoDB nie s\u00fa s\u00fabory d\u00e1t za\u0161ifrovan\u00e9, je rozumn\u00e9 spusti\u0165 MongoDB s <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/administration\/security-checklist\/#run-mongodb-with-a-dedicated-user\">Dedikovan\u00fd u\u017e\u00edvate\u013e<\/a><\/noindex>, ktor\u00fd m\u00e1 pln\u00fd pr\u00edstup k s\u00faborom, s obmedzen\u00fdm pr\u00edstupom iba pre neho a mo\u017enos\u0165ou pou\u017e\u00edva\u0165 vlastn\u00e9 prostriedky na spravovanie pr\u00edstupu k s\u00faborom opera\u010dn\u00e9ho syst\u00e9mu.<\/p>\n<h3>Chyba pri navrhnut\u00ed sch\u00e9my<\/h3>\n<p>\nMongoDB nepou\u017e\u00edva sch\u00e9mu. Ale to neznamen\u00e1, \u017ee sch\u00e9ma nie je potrebn\u00e1. Ak chcete jednoducho uchov\u00e1va\u0165 dokumenty bez akejko\u013evek konzistentnej sch\u00e9my, ukladanie je r\u00fdchle a jednoduch\u00e9, ale ich neskor\u0161ie z\u00edskanie m\u00f4\u017ee by\u0165 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.compose.com\/articles\/mongodb-with-and-without-schemas\/\">neuverite\u013ene zlo\u017eit\u00e9<\/a><\/noindex>. <\/p>\n<p>Klasick\u00fd \u010dl\u00e1nok \u201e<i><noindex><a rel=\"nofollow\" href=\"https:\/\/www.mongodb.com\/blog\/post\/6-rules-of-thumb-for-mongodb-schema-design-part-1\">6 empirick\u00fdch pravidiel na navrhnutie sch\u00e9my MongoDB\u201c<\/a><\/noindex><\/i> stoj\u00ed za pre\u010d\u00edtanie a tak\u00e9 funkcie ako <noindex><a rel=\"nofollow\" href=\"https:\/\/studio3t.com\/knowledge-base\/articles\/schema-explorer\/\">Schema Explorer<\/a><\/noindex> v externom n\u00e1stroji Studio 3T by sa mali pou\u017e\u00edva\u0165 na pravideln\u00e9 kontroly sch\u00e9my.<\/p>\n<h3>Nezabudnite na poradie triedenia<\/h3>\n<p>\nZabudn\u00fa\u0165 na poradie triedenia m\u00f4\u017ee by\u0165 najv\u00e4\u010d\u0161\u00edm sklaman\u00edm a m\u00f4\u017eete strati\u0165 viac \u010dasu ne\u017e pri akejko\u013evek inej nespr\u00e1vnej konfigur\u00e1cii. Predvolen\u00e1 MongoDB pou\u017e\u00edva <noindex><a rel=\"nofollow\" href=\"https:\/\/jira.mongodb.org\/browse\/SERVER-1920\">bin\u00e1rne triedenie<\/a><\/noindex>. Ale \u0165a\u017eko poveda\u0165, \u017ee by to niekomu pomohlo. Citliv\u00e9 na ve\u013ek\u00e9\/mal\u00e9 p\u00edsmen\u00e1, bin\u00e1rne triedenia sa pova\u017eovali za zauj\u00edmav\u00e9 anachronizmy spolu s perlami, kaftanmi a zakriven\u00fdmi f\u00fazmi e\u0161te v 80-tych rokoch minul\u00e9ho storo\u010dia. Teraz je ich pou\u017eitie neodpustite\u013en\u00e9. V re\u00e1lnom \u017eivote je \"motorbike\" to ist\u00e9 ako \"Motorbike\". A \"Brit\u00e1nia\" a \"brit\u00e1nia\" s\u00fa to ist\u00e9 miesto. Mal\u00e9 p\u00edsmeno je jednoducho ve\u013ek\u00fdm ekvivalentom ve\u013ek\u00e9ho p\u00edsmena. A nenechajte ma rozpr\u00e1va\u0165 o trieden\u00ed diakritick\u00fdch znamienok. Pri vytv\u00e1ran\u00ed datab\u00e1zy v MongoDB pou\u017eite parametre triedenia bez oh\u013eadu na diakritiku a <noindex><a rel=\"nofollow\" href=\"https:\/\/weblogs.sqlteam.com\/dang\/archive\/2009\/07\/26\/Collation-Hell-Part-1.aspx\">ve\u013ek\u00e9\/mal\u00e9 p\u00edsmen\u00e1<\/a><\/noindex>, ktor\u00e9 odpovedaj\u00fa jazyku a <noindex><a rel=\"nofollow\" href=\"https:\/\/derickrethans.nl\/mongodb-collation-revised.html\">kult\u00fare pou\u017e\u00edvate\u013eov syst\u00e9mu<\/a><\/noindex>. Tak v\u00fdrazne zjednodu\u0161\u00edte vyh\u013ead\u00e1vanie v re\u0165azcov\u00fdch \u00fadajoch.<\/p>\n<h3>Vytvorenie kolekci\u00ed s ve\u013ek\u00fdmi dokumentmi<\/h3>\n<p>\nMongoDB umo\u017e\u0148uje ulo\u017eenie ve\u013ek\u00fdch dokumentov a\u017e do 16 MB v kolekci\u00e1ch, a <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/core\/gridfs\/#gridfs\">GridFS<\/a><\/noindex> je ur\u010den\u00e1 pre dokumenty v\u00e4\u010d\u0161ie ako 16 MB. Ale len preto, \u017ee je mo\u017en\u00e9 ulo\u017ei\u0165 ve\u013ek\u00e9 dokumenty, neznamen\u00e1, \u017ee je to najlep\u0161ia idea. Najlep\u0161ie funguje MongoDB, ak uklad\u00e1te jednotliv\u00e9 dokumenty ve\u013ekosti nieko\u013ek\u00fdch kilobajtov, pri\u010dom ich sk\u00f4r pova\u017eujete za riadky v \u0161irokej SQL tabu\u013eke. Ve\u013ek\u00e9 dokumenty m\u00f4\u017eu sp\u00f4sobi\u0165 probl\u00e9my s <noindex><a rel=\"nofollow\" href=\"https:\/\/www.reddit.com\/r\/mongodb\/comments\/573fqr\/question_mongodb_terrible_performance_for_a\/\">v\u00fdkonom<\/a><\/noindex>.<\/p>\n<h3>Vytv\u00e1ranie dokumentov s ve\u013ek\u00fdmi po\u013eami <\/h3>\n<p>\nDokumenty m\u00f4\u017eu obsahova\u0165 polia. Najlep\u0161ie je, ak po\u010det prvkov v poli nie je bl\u00edzko \u0161tyrom zna\u010dk\u00e1m. Ak sa prvky do po\u013ea \u010dasto prid\u00e1vaj\u00fa, prekro\u010d\u00ed obsahuj\u00faci dokument a bude potrebn\u00e9 ho <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.mongodb.org\/manual\/core\/data-model-operations\/#document-growth\">premiestni\u0165<\/a><\/noindex>, \u010do znamen\u00e1, \u017ee bude potrebn\u00e9 <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.mongodb.org\/manual\/core\/write-performance\/#document-growth\">aktualizova\u0165 aj indexy<\/a><\/noindex>. Pri op\u00e4tovnej index\u00e1cii dokumentu s ve\u013ek\u00fdm po\u013eom sa indexy \u010dasto prepisuj\u00fa, preto\u017ee pod ka\u017ed\u00fd prvok existuje <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.mongodb.org\/manual\/core\/index-multikey\/\">z\u00e1znam<\/a><\/noindex>, ktor\u00fd uchov\u00e1va jeho index. Tak\u00e1to preindeks\u00e1cia sa tie\u017e deje, ke\u010f sa dokument vlo\u017e\u00ed alebo odstr\u00e1ni. <\/p>\n<p>V MongoDB existuje takzvan\u00fd <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/core\/mmapv1\/#record-allocation-strategies\">\u201efaktor vyplnenia\u201c<\/a><\/noindex>, ktor\u00fd poskytuje priestor pre rast dokumentov, aby sa t\u00e1to ot\u00e1zka minimalizovala. <br \/>\nM\u00f4\u017eete si myslie\u0165, \u017ee sa d\u00e1 ob\u00eds\u0165 bez indexovania pol\u00ed. Bohu\u017eia\u013e, kv\u00f4li absencii indexov m\u00f4\u017eu vznikn\u00fa\u0165 in\u00e9 probl\u00e9my. Preto\u017ee dokumenty s\u00fa prezeran\u00e9 od za\u010diatku do konca, vyh\u013ead\u00e1vanie prvkov na konci po\u013ea potrv\u00e1 dlh\u0161ie a v\u00e4\u010d\u0161ina oper\u00e1ci\u00ed s\u00favisiacich s tak\u00fdmto dokumentom bude <noindex><a rel=\"nofollow\" href=\"http:\/\/grokbase.com\/t\/gg\/mongodb-user\/128r0h5gzw\/inserting-into-300-000-size-embedded-array-is-slow-even-w-o-indexes\">pomal\u00e1<\/a><\/noindex>. <\/p>\n<h3>Nezabudnite, \u017ee poradie et\u00e1p v agreg\u00e1cii je d\u00f4le\u017eit\u00e9<\/h3>\n<p>\nV datab\u00e1zovom syst\u00e9me s optimaliz\u00e1torom dopytov s\u00fa dopyty, ktor\u00e9 p\u00ed\u0161ete, vysvetlen\u00edm toho, \u010do chcete z\u00edska\u0165, a nie toho, ako to z\u00edska\u0165. Tento mechanizmus funguje pod\u013ea anal\u00f3gie s objedn\u00e1vkou v re\u0161taur\u00e1cii: oby\u010dajne jednoducho objedn\u00e1vate jedlo, a nie d\u00e1vate podrobn\u00e9 pokyny kuch\u00e1rovi.<\/p>\n<p>V MongoDB pr\u00edkazy in\u0161truujete kuch\u00e1ra. Napr\u00edklad, treba zabezpe\u010di\u0165, aby d\u00e1ta pre\u0161li cez <code>reduce<\/code> \u010do najsk\u00f4r v pipeline pomocou <code>$match<\/code> a <code>$project<\/code>, zatia\u013e \u010do triedenie prebieha a\u017e po <code>reduce<\/code>, a vyh\u013ead\u00e1vanie prebieha presne v tom porad\u00ed, v ktorom potrebujete. Pr\u00edtomnos\u0165 optimaliz\u00e1tora dopytov, ktor\u00fd zbav\u00ed zbyto\u010dnej pr\u00e1ce, optim\u00e1lne usporiada f\u00e1zy a vyberie typ pripojenia, v\u00e1s m\u00f4\u017ee rozmazn\u00e1va\u0165. V MongoDB z\u00edskavate viac kontroly v\u00fdmenou za pohodlie.<\/p>\n<p>N\u00e1stroje ako <noindex><a rel=\"nofollow\" href=\"https:\/\/studio3t.com\/\">Studio 3T<\/a><\/noindex> u\u013eah\u010dia zostavenie dopytov agreg\u00e1cie v <noindex><a rel=\"nofollow\" href=\"https:\/\/studio3t.com\/knowledge-base\/articles\/build-mongodb-aggregation-queries\/\">K\u013e\u00fa\u010d-hodnota, grafov\u00fd*<\/a><\/noindex>. Funkcia Aggregation Editor v\u00e1m umo\u017en\u00ed aplikova\u0165 oper\u00e1tory pipeline po jednom kroku naraz a skontrolova\u0165 vstupy a v\u00fdstupy v ka\u017edom kroku pre u\u013eah\u010denie ladenia. <\/p>\n<h3>Pou\u017e\u00edvanie r\u00fdchlej z\u00e1pisu<\/h3>\n<p>\nNikdy nenastavujte v MongoDB parametre z\u00e1pisu s vysokou r\u00fdchlos\u0165ou, ale n\u00edzkou spo\u013eahlivos\u0165ou. Tento re\u017eim <i>\u201efile-and-forget\u201c<\/i> sa jav\u00ed r\u00fdchly, preto\u017ee pr\u00edkaz sa vracia predt\u00fdm, ne\u017e sa vykon\u00e1 z\u00e1pis. Ak syst\u00e9m havaruje sk\u00f4r, ne\u017e bud\u00fa d\u00e1ta zap\u00edsan\u00e9 na disk, stratia sa a bud\u00fa v nekonzistentnom stave. Na\u0161\u0165astie 64-bitov\u00fd MongoDB m\u00e1  zapnut\u00e9 logovanie. <\/p>\n<p>\u00dalo\u017en\u00e9 motory MMAPv1 a WiredTiger pou\u017e\u00edvaj\u00fa logovanie, aby tomu zabr\u00e1nili, hoci WiredTiger sa m\u00f4\u017ee obnovi\u0165 do posledn\u00e9ho konzistentn\u00e9ho <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/core\/wiredtiger\/#storage-wiredtiger-checkpoints\">kontroln\u00e9ho bodu<\/a><\/noindex>, ak je logovanie vypnut\u00e9.<\/p>\n<p>Logovanie zabezpe\u010duje, \u017ee datab\u00e1za je v konzistentnom stave po obnoven\u00ed a uchov\u00e1va v\u0161etky \u00fadaje do momentu zap\u00edsania do protokolu. Frekvencia z\u00e1pisov sa nastavuje pomocou parametra <code><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/reference\/configuration-options\/#storage.journal.commitIntervalMs\">commitIntervalMs<\/a><\/noindex><\/code>. <\/p>\n<p>Aby ste sa uistili v z\u00e1pisoch, overte, \u017ee v konfigura\u010dnom s\u00fabore je logovanie zapnut\u00e9 <code><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/reference\/configuration-options\/#configuration-file\">(storage.journal.enabled<\/a><\/noindex>)<\/code>, a frekvencia z\u00e1pisov zodpoved\u00e1 objemu inform\u00e1ci\u00ed, ktor\u00fd si m\u00f4\u017eete dovoli\u0165 strati\u0165.<\/p>\n<h3>Zoradenie bez indexu<\/h3>\n<p>\nPri vyh\u013ead\u00e1van\u00ed a agregovan\u00ed \u010dasto nast\u00e1va potreba zoradenia \u00fadajov. D\u00fafajme, \u017ee to rob\u00edte na jednom z kone\u010dn\u00fdch krokov, po filtrovan\u00ed v\u00fdsledkov s cie\u013eom zmen\u0161i\u0165 objem zoradovan\u00fdch \u00fadajov. A aj v takom pr\u00edpade budete potrebova\u0165 <noindex><a rel=\"nofollow\" href=\"https:\/\/studio3t.com\/knowledge-base\/articles\/mongodb-index-strategy\/\">index<\/a><\/noindex>. M\u00f4\u017eete pou\u017ei\u0165 jednoduch\u00fd alebo zlo\u017een\u00fd index. <\/p>\n<p>Ak vhodn\u00fd index neexistuje, MongoDB sa zaob\u00edde bez neho. Existuje pam\u00e4\u0165ov\u00e9 obmedzenie 32 MB na celkov\u00fa ve\u013ekos\u0165 v\u0161etk\u00fdch dokumentov v <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.org\/manual\/reference\/limits\/#Sort-Operations\">oper\u00e1cii triedenia<\/a><\/noindex>, a ak MongoDB dosiahne tento limit, vr\u00e1ti bu\u010f chybu alebo <noindex><a rel=\"nofollow\" href=\"https:\/\/www.sitepoint.com\/7-simple-speed-solutions-mongodb\/\">pr\u00e1zdny s\u00fabor z\u00e1znamov<\/a><\/noindex>.<\/p>\n<h3>Vyh\u013ead\u00e1vanie bez podpory indexov<\/h3>\n<p>\nVyh\u013ead\u00e1vacie dopyty plnia funkciu podobn\u00fa oper\u00e1cii JOIN v SQL. Na lep\u0161iu funk\u010dnos\u0165 potrebuj\u00fa index hodnoty k\u013e\u00fa\u010da, ktor\u00fd sa pou\u017e\u00edva ako zahrani\u010dn\u00fd k\u013e\u00fa\u010d. To nie je zjavn\u00e9, preto\u017ee pou\u017eitie nie je zobrazen\u00e9 v <code>explain()<\/code>. Tieto indexy s\u00fa doplnkom k indexu zap\u00edsan\u00e9mu v <code>explain()<\/code>, ktor\u00fd sa zase pou\u017e\u00edva oper\u00e1tormi pipeline <code>$match<\/code> a <code>$sort<\/code>, ke\u010f sa objavia na za\u010diatku pipeline. Indexy teraz m\u00f4\u017eu pokr\u00fdva\u0165 ak\u00fako\u013evek f\u00e1zu <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/core\/aggregation-pipeline\/#aggregation-pipeline-operators-and-performance\">pipeline agreg\u00e1cie<\/a><\/noindex>. <\/p>\n<h3>Odstr\u00e1nenie pou\u017eitia multi-aktualiz\u00e1ci\u00ed<\/h3>\n<p>\nMet\u00f3da <code><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/reference\/method\/db.collection.update\/\">db.collection.update()<\/a><\/noindex><\/code> sa pou\u017e\u00edva na zmenu \u010dasti existuj\u00faceho dokumentu alebo cel\u00e9ho dokumentu, a\u017e do \u00faplnej n\u00e1hrady v z\u00e1vislosti od zadan\u00e9ho parametra <code><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/reference\/method\/db.collection.update\/#update-parameter\">update<\/a><\/noindex><\/code>. Nie je to tak\u00e9 zjavn\u00e9, \u017ee nevypracuje v\u0161etky dokumenty v kolekcii, pokia\u013e nenastav\u00edte parameter <code><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/reference\/method\/db.collection.update\/#multi-parameter\">viac<\/a><\/noindex><\/code> na aktualiz\u00e1ciu v\u0161etk\u00fdch dokumentov, ktor\u00e9 sp\u013a\u0148aj\u00fa krit\u00e9ri\u00e1 dopytu.<\/p>\n<h3>Nezabudnite na d\u00f4le\u017eitos\u0165 poradia k\u013e\u00fa\u010dov v hash tabu\u013eke<\/h3>\n<p>\nV JSON je objekt zlo\u017een\u00fd z neusporiadanej kolekcie ve\u013ekosti nula alebo viacer\u00fdch p\u00e1rov n\u00e1zov\/hodnota, kde n\u00e1zov je re\u0165azec a hodnota je re\u0165azec, \u010d\u00edslo, booleovsk\u00e1 hodnota, nula, objekt alebo pole.<\/p>\n<p>Bohu\u017eia\u013e, BSON prira\u010fuje ve\u013ek\u00fd v\u00fdznam poradiu pri vyh\u013ead\u00e1van\u00ed. V MongoDB poradie k\u013e\u00fa\u010dov vn\u00fatri vnoren\u00fdch objektov <noindex><a rel=\"nofollow\" href=\"http:\/\/devblog.me\/wtf-mongo\">m\u00e1 hodnotu<\/a><\/noindex>, t.j. <code>{ firstname: \"Phil\", surname: \"factor\" }<\/code> \u2013 to nie je to ist\u00e9 ako <code>{ { surname: \"factor\", firstname: \"Phil\" } }<\/code>. To znamen\u00e1, \u017ee mus\u00edte uchov\u00e1va\u0165 v dokumentoch poradie p\u00e1rov n\u00e1zov\/hodnota, ak chcete ma\u0165 istotu, \u017ee ich n\u00e1jdete.<\/p>\n<h3>Nezamie\u0148ajte <i>\"null\"<\/i> a <i>\"undefined\"<\/i><\/h3>\n<p>\nHodnota <i>\"undefined\"<\/i> nikdy nebolo platn\u00e9 v JSON, pod\u013ea <noindex><a rel=\"nofollow\" href=\"http:\/\/www.ecma-international.org\/publications\/files\/ECMA-ST\/ECMA-404.pdf\">ofici\u00e1lneho \u0161tandardu<\/a><\/noindex> JSON (ECMA-404, \u010cas\u0165 5), aj ke\u010f sa pou\u017e\u00edva v JavaScripte. Navy\u0161e, pre BSON je zastaran\u00e9 a prev\u00e1dza sa na <code>$null<\/code>, \u010do nie v\u017edy je dobr\u00e9 rie\u0161enie. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/meteor\/meteor\/issues\/1646#issuecomment-29682964\">Vyhnite sa pou\u017e\u00edvaniu <i>\"undefined\"<\/i> v MongoDB<\/a><\/noindex>.<\/p>\n<h3>Pou\u017eitie <code>$limit()<\/code> bez <code>$sort()<\/code><\/h3>\n<p>\nVe\u013emi \u010dasto, ke\u010f vyv\u00edjate v MongoDB, je u\u017eito\u010dn\u00e9 len vidie\u0165 vzor v\u00fdsledku, ktor\u00fd sa vr\u00e1ti z dopytu alebo agreg\u00e1cie. Na tento \u00fa\u010del v\u00e1m pom\u00f4\u017ee <code>$limit()<\/code>, ale nikdy by to nemalo by\u0165 vo fin\u00e1lnej verzii k\u00f3du, pokia\u013e pred n\u00edm nepou\u017e\u00edvate <code>$sort<\/code>T\u00e1to mechanika je potrebn\u00e1, preto\u017ee inak nem\u00f4\u017eete zaru\u010di\u0165 poradie v\u00fdsledkov a nem\u00f4\u017eete spo\u013eahlivo prezera\u0165 \u00fadaje. Na vrchole v\u00fdsledku dostanete r\u00f4zne z\u00e1znamy v z\u00e1vislosti od triedenia. Pre spo\u013eahliv\u00fa funkciu musia by\u0165 dotazy a agreg\u00e1cie deterministick\u00e9, teda musia vraca\u0165 rovnak\u00e9 v\u00fdsledky pri ka\u017edom vykonan\u00ed. K\u00f3d, v ktorom je <code>$limit()<\/code>, ale nie <code>$sort<\/code>, nebude pova\u017eovan\u00fd za deterministick\u00fd a m\u00f4\u017ee nesk\u00f4r sp\u00f4sobi\u0165 chyby, ktor\u00e9 bude \u0165a\u017ek\u00e9 sledova\u0165.<\/p>\n<h3>Z\u00e1ver<\/h3>\n<p>\nJedin\u00fd sp\u00f4sob, ako sa sklama\u0165 v MongoDB, je priamo ju porovn\u00e1va\u0165 s in\u00fdm typom datab\u00e1z, ako je RDBMS, alebo pr\u00eds\u0165 k jej pou\u017e\u00edvaniu na z\u00e1klade ur\u010dit\u00fdch o\u010dak\u00e1van\u00ed. Je to ako porovn\u00e1va\u0165 pomaran\u010d s vidlicou. Datab\u00e1zov\u00e9 syst\u00e9my sleduj\u00fa ur\u010dit\u00e9 ciele. Najlep\u0161ie je jednoducho pochopi\u0165 a oceni\u0165 tieto rozdiely. Bolo by hanbou tla\u010di\u0165 na v\u00fdvoj\u00e1rov MongoDB kv\u00f4li ceste, ktorou boli n\u00faten\u00ed \u00eds\u0165 smerom RDBMS. Chcem vidie\u0165 nov\u00e9 a zauj\u00edmav\u00e9 sp\u00f4soby, ako rie\u0161i\u0165 star\u00e9 probl\u00e9my, ako je zabezpe\u010denie integrity \u00fadajov a vytv\u00e1ranie \u00fadajov\u00fdch syst\u00e9mov odoln\u00fdch vo\u010di poruch\u00e1m a \u00fatokom zlo\u010dincov.<\/p>\n<p>Implement\u00e1cia ACID transakci\u00ed v MongoDB vo verzii 4.0 je dobr\u00fdm pr\u00edkladom zavedenia d\u00f4le\u017eit\u00fdch vylep\u0161en\u00ed inovat\u00edvnym sp\u00f4sobom. Viacdokumentov\u00e9 a viacoper\u00e1torov\u00e9 transakcie s\u00fa teraz atomick\u00e9. Rovnako sa objavila mo\u017enos\u0165 regulova\u0165 \u010das potrebn\u00fd na z\u00edskanie z\u00e1mkov a kon\u010di\u0165 zablokovan\u00e9 transakcie, ako aj meni\u0165 \u00farove\u0148 izol\u00e1cie.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/ZRL1\/\"><img decoding=\"async\" alt=\"14 vec\u00ed, ktor\u00e9 by som chcel vedie\u0165 pred za\u010dat\u00edm pr\u00e1ce s MongoDB\" src=\"\/wp-content\/uploads\/2020\/09\/9966ff2613efab52aac99c2a0eda5c87.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<h3>\u010c\u00edta\u0165 \u010falej:<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/519340\/\">Ako nahra\u0165 d\u00e1ta do Google BigQuery<\/a><\/noindex><\/li>\n<\/ul>\n<p>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/520412\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0432 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043a\u0443\u0440\u0441\u0430 \u00ab\u041d\u0435\u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445\u00bb. \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b: \u041a\u0440\u0430\u0439\u043d\u0435 \u0432\u0430\u0436\u043d\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u0445\u0435\u043c\u0443 \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0432 MongoDB \u043e\u043d\u0430 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430. \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e, \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432\u0430\u0448\u0435\u0439 \u0441\u0445\u0435\u043c\u0435 \u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u043c\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430. \u0418\u0437\u0431\u0435\u0433\u0430\u0439\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432. \u0411\u0443\u0434\u044c\u0442\u0435 \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u044b \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 MongoDB, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438 \u0440\u0435\u0447\u044c \u0438\u0434\u0435\u0442 \u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0438 \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0441\u0442\u0438. \u0412 MongoDB [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":95149,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-95148","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0432 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043a\u0443\u0440\u0441\u0430 \u00ab\u041d\u0435\u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445\u00bb.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/14-veshhej-kotorye-ya-hotel-by-znat-pered-nachalom-raboty-s-mongodb\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"sk_SK\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd4714 \u0432\u0435\u0449\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u0437\u043d\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0441 MongoDB | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0432 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043a\u0443\u0440\u0441\u0430 \u00ab\u041d\u0435\u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445\u00bb.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/14-veshhej-kotorye-ya-hotel-by-znat-pered-nachalom-raboty-s-mongodb\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-09-25T17:43:09+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-09-25T17:43:09+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd4714 vec\u00ed, ktor\u00e9 by som chcel vedie\u0165 pred za\u010diatkom pr\u00e1ce s MongoDB | ProHoster","description":"Preklad \u010dl\u00e1nku bol pripraven\u00fd v predve\u010der za\u010diatku kurzu \u201eNerela\u010dn\u00e9 datab\u00e1zy\u201c.","canonical_url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/14-veshhej-kotorye-ya-hotel-by-znat-pered-nachalom-raboty-s-mongodb","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sk_SK","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd4714 \u0432\u0435\u0449\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u0437\u043d\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0441 MongoDB | ProHoster","og:description":"\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0432 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043a\u0443\u0440\u0441\u0430 \u00ab\u041d\u0435\u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445\u00bb.","og:url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/14-veshhej-kotorye-ya-hotel-by-znat-pered-nachalom-raboty-s-mongodb","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-09-25T17:43:09+00:00","article:modified_time":"2020-09-25T17:43:09+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"95148","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 11:11:32","updated":"2022-10-03 07:39:33","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/95148","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/comments?post=95148"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/95148\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media\/95149"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=95148"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=95148"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=95148"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}