MongoDB-де сұрауларды қалай орындауға болады
MongoDB болып табылады деректер базасы MongoDB - ақпаратты сақтау және ұйымдастыру үшін құжат құрылымын пайдаланатын тегін және ашық бастапқы дерекқорды басқару жүйесі. Бұл масштабтауға және икемділікке байланысты веб-әзірлеу әлемінде өте танымал таңдау. Сұраулар арқылы құжаттар жинағы ішінде нақты деректерді іздеуге болады. Бұл мақалада біз MongoDB жүйесінде сұрауларды орындаудың әртүрлі жолдарын және осы қуатты іздеу құралын барынша пайдалану жолдарын қарастырамыз.
MongoDB-дегі сұрау түрлері
MongoDB сұрауларды орындаудың әртүрлі әдістерін ұсынады деректер базасы. Ең негізгі сұрау Бұл белгілі бір критерийлер жиынтығына сәйкес келетін құжаттарды іздеу. Ол үшін әдіс қолданылады. табу () іздеу параметрлерін қамтитын сұрау нысанымен бірге. Бұл функция курсорды қайтарады, оны сұрау нәтижелеріне қол жеткізу үшін қайталауға болады.
Логикалық операторлармен іздейді
Негізгі сұрауларға қоса, MongoDB кеңейтілген іздеулерге мүмкіндік беретін логикалық операторларды ұсынады. сияқты логикалық операторлар $және, $немесе y $жоқ Оларды бірнеше шарттарды қамтитын күрделі сұрауларды құру үшін біріктіруге болады. Мысалы, біз оператор арқылы екі критерийге сәйкес келетін құжаттарды іздей аламыз $жәнеОл үшін сұраудағы оператор ішіндегі әрбір шартты қамтитын нысанды көрсету керек.
Проекция бойынша кеңестер
MongoDB нәтижелерде қайтарылған өрістерді шектеу үшін жобаланған сұрауларды орындауға мүмкіндік береді. Бұл әдісті қолдану арқылы қол жеткізіледі жоба() немесе сұрауға қандай өрістерді қосу немесе алып тастау керектігін көрсету. Бұл функция жауап өлшемін азайтып, сұрау өнімділігін жылдамдатып, құжат өрістерінің ішкі жиыны ғана қажет болғанда пайдалы.
Нәтижелерді сұрыптау және шектеу
Көптеген жағдайларда бұл қажет тапсырыс немесе шектеу MongoDB ішіндегі сұрау нәтижелері. Ол үшін келесі әдістерді қолдануға болады: сұрыптау() y шектеу()Әдіс сұрыптау() Ол нәтижелерді бір немесе бірнеше өрістер негізінде сұрыптауға мүмкіндік береді шектеу() Ол қайтарылатын құжаттардың санын шектейді. Бұл функциялар алынған ақпарат көлемін ұйымдастыруға және бақылауға көмектеседі, маңыздырақ және тиімді нәтижелерді қамтамасыз етеді.
MongoDB-де сұрауларды орындау жолын білу осы дерекқордың әлеуетін толық пайдалану үшін өте маңызды. Әртүрлі сұрау опциялары арқылы өнімділікті арттыру үшін нақты деректерді іздеуге, күрделі сұрауларды құруға және нәтижелерді шектеуге болады. Тәжірибе және әртүрлі әдістер мен операторларды түсіну арқылы сіз тиімді сұрауларды орындай аласыз және қажетті ақпаратты тез және дәл ала аласыз.
– MongoDB сұрауларына кіріспе
MongoDB - үлкен көлемдегі деректерді сақтауға мүмкіндік беретін жоғары масштабталатын және икемді NoSQL дерекқоры. MongoDB-тің ең қуатты мүмкіндіктерінің бірі - оның кеңейтілген сұрауларды орындау мүмкіндігі. тиімдіОсы сұраулар арқылы әзірлеушілер өз қажеттіліктеріне сәйкес дерекқордан нақты деректерді ала алады.
MongoDB ішіндегі сұраулар құрылымдық сұрау тілі (SQL) арқылы орындалады және «сұрау синтаксисі бар сұраулар» деп аталады. Бұл сұраулар JSON құжаттары ретінде анықталады және дерекқорға жіберіледі. MongoDB деректері оның орындалуы үшін. Сұраулар деректерді дәл сүзу және өңдеу үшін шарттарды, болжамдарды, сұрыптауды және шектеулерді қамтуы мүмкін.
MongoDB сұрауларының негізгі ерекшелігі сұрау өнімділігін жақсарту үшін индекстерді пайдалану мүмкіндігі болып табылады. MongoDB ішіндегі индекстер сұрауларды жылдамдату үшін оңтайландырылған форматта жинақ деректерінің ішкі жиынын сақтайтын деректер құрылымдары болып табылады. Индекстерді жинақтағы бір немесе бірнеше өрістерде жасауға болады және сұрау кезінде тексерілуі қажет құжаттар санын азайту арқылы деректерге қол жеткізуді жылдамдатады. Бұл функцияны толық пайдалану үшін әрбір пайдалану жағдайына сәйкес индекстерді әзірлеу және енгізу маңызды.
– Сұрау салуға арналған негізгі синтаксис
MongoDB жүйесінде дерекқорымыз бен жинақтарымыз жасалғаннан кейін келесі қадам сұрауларды орындауды үйрену болып табылады. MongoDB өзінің Query Language (QL) деп аталатын сұрау тілін пайдаланады. QL көмегімен біз күрделі сұрауларды қарапайым және тиімді орындай аламыз.
MongoDB-де сұрауларды орындаудың негізгі синтаксисі әдісті пайдаланудан тұрады db.collection.find()Бұл әдіс белгілі бір критерийлерге сәйкес келетін жинақ ішінде құжаттарды іздеуге мүмкіндік береді. Іздеу критерийлерін көрсету үшін JSON нысанын табу әдісіне аргумент ретінде пайдаланамыз.
Сұрауымызды жасағаннан кейін нәтижелерді нақтылау үшін әртүрлі операторларды пайдалана аламыз. MongoDB бізге дәлірек және егжей-тегжейлі сұрауларды орындауға мүмкіндік беретін кең ауқымды операторларды ұсынады. Ең көп таралған операторлардың кейбірі:
- $eq: өріс мәні басқа көрсетілген мәнге тең екенін тексеру үшін.
- $ne: өріс мәні басқа көрсетілген мәнге тең емес екенін тексеру.
- $gt: бір өрістің мәні басқа көрсетілген мәннен үлкен екенін тексеру.
- $lt: бір өрістің мәні басқа көрсетілген мәннен кіші екенін тексеру.
Бұл жай ғана Кейбір мысалдар MongoDB қол жетімді операторлардың. Бұлардан басқа күрделірек сұрауларды орындауға мүмкіндік беретін көптеген операторлар бар. Операторларды іздеу критерийлерімен біріктіру арқылы біз дерекқорымыздан нақты және сүзілген нәтижелерді ала аламыз.
– Сұрауларда салыстыру және логикалық операторларды қолдану
MongoDB-де пайдалану салыстыру және логикалық операторлар Сұрауларда біз деректер жинақтарымызда кеңейтілген және дәл іздеулерді орындай аламыз. Бұл операторлар белгілі бір шарттарға сәйкес келетін құжаттарды сүзу үшін қолданылады. Оларды сәйкесінше біріктіру арқылы біз нақтырақ және сәйкес нәтижелерге қол жеткізе аламыз.
The салыстыру операторлары MongoDB кіреді $тең теңдік үшін, $ne теңсіздік үшін, $gt астам үшін, $gte үлкен немесе тең үшін, $lt аз үшін және $lte «Кіші» немесе «тең» операторы құжаттарымыздағы сандық мәндерді, мәтіндік жолдарды және басқа деректер түрлерін салыстыру үшін пайдаланылады. Мысалы, біз «жас» өрісі 18-ден үлкен немесе оған тең барлық құжаттарды кіші немесе тең оператор арқылы іздей аламыз. $gte.
The логикалық операторлар MongoDB кіреді $және, $немесе y $жоқБұл операторлар сұраудағы бірнеше шарттарды біріктіру үшін қолданылады. Оператор $және Бұл оператор бір уақытта бірнеше шарттарға сәйкес келетін құжаттарды табуға мүмкіндік береді $немесе шарттардың кем дегенде біреуіне сәйкес келетін құжаттарды табыңыз. Екінші жағынан, оператор $жоқ Шартты жоққа шығару үшін қолданылады, яғни оған сәйкес келмейтін құжаттарды табады. Осы логикалық операторларды пайдалану арқылы біз MongoDB жүйесінде күрделірек және икемді сұрауларды құра аламыз.
– Тұрақты өрнектерді қолданатын сұраулар
MongoDB - тұрақты өрнектерді пайдаланып икемді сұрауға мүмкіндік беретін NoSQL дерекқоры. Тұрақты өрнектер - құжаттар жинағындағы белгілі бір өрістегі таңбалар жолдарын іздеу үшін пайдаланылатын мәтін үлгілері. Бұл сұраулар телефон нөмірі, электрондық пошта мекенжайы немесе пошта индексі сияқты белгілі бір үлгіге негізделген ақпаратты іздеу қажет болғанда өте пайдалы болуы мүмкін. MongoDB жүйесінде тұрақты өрнектер өріс ішіндегі сәйкестіктерді іздеуге мүмкіндік беретін `$regex` операторымен бірге пайдаланылады.
Мысалы, бізде тұтынушы туралы ақпаратты қамтитын құжаттар жинағы бар делік. Егер аты «J» әрпінен басталатын барлық тұтынушыларды тапқымыз келсе, біз `/^J/` тұрақты өрнекті пайдалана аламыз. Осы арқылы сұрау «аты» өрісі «J» әрпінен басталатын барлық құжаттарды табады. Сондай-ақ, `/son/` тұрақты өрнекті пайдаланып, кез келген позицияда «son» таңбалар тізбегін қамтитын барлық тұтынушыларды табуға болады.
Негізгі іздеу әрекеттерінен басқа, MongoDB күрделі сұрауларды орындау үшін тұрақты өрнектерді басқа операторлармен біріктіруге мүмкіндік береді. Мысалы, аты «J» әрпінен басталатын және телефон нөмірі «123» сандық тізбегі бар барлық тұтынушыларды табатын сұрауды орындай аламыз. Ол үшін `$and` операторын сәйкес тұрақты өрнектермен бірге пайдалана аламыз. Бұл жағдайда сұрау келесідей болады:{ $және: [ {аты: { $regex: /^J/ } }, {телефон: { $regex: /123/ } ] }`.
– Сұрау өнімділігін жақсарту үшін индекстерді пайдалану
MongoDB жүйесінде сұрау өнімділігін жақсарту үшін қолдануға болатын әртүрлі әдістер бар, олардың бірі индекстерді пайдалану болып табылады. MongoDB ішіндегі индекстер дерекқорда сақталған ақпаратқа жылдамырақ қол жеткізуге мүмкіндік беру арқылы сұрау тиімділігін жақсартатын деректер құрылымдары болып табылады. Көрсеткіштерді дұрыс пайдалану арқылы, қол жеткізуге болады консультациялар тиімдірек және олардың жауап беру уақыты қысқарады.
MongoDB ішінде индекстерді пайдалану үшін алдымен индекстегіңіз келетін жинақта индексті жасауыңыз керек. MongoDB бір өрісті индекстер, құрама индекстер және геокеңістіктік индекстер сияқты индекстердің әртүрлі түрлерін ұсынады. Қолданылатын индекс түрі деректер сипатына және орындағыңыз келетін сұрау түріне байланысты болады. Индекс жасалғаннан кейін MongoDB жинаққа кіретін сұраулардың өнімділігін жақсарту үшін автоматты түрде сол индексті пайдаланады.
Индекстердің сұрау өнімділігін жақсартқанымен, жазу әрекеттерінің өнімділігіне де әсер ететінін ескеру маңызды. Бұл әсер ететін жазу әрекеті орындалған сайын құжатқа Индекстелген кезде MongoDB сәйкес индекстерді жаңартуы керек. Сондықтан сұрау өнімділігі мен жазу өнімділігі арасындағы теңгерімді табу қажет. Кейбір жағдайларда оңтайлы дерекқор өнімділігіне қол жеткізу үшін индекстеу стратегиясына түзетулер енгізу қажет болуы мүмкін.
– MongoDB ішіндегі кірістірілген сұраулар және біріктіру операциялары
MongoDB - тиімді және икемді сұрауға мүмкіндік беретін NoSQL дерекқоры. MongoDB-тің ең қуатты мүмкіндіктерінің бірі ... кірістірілген сұрауларБұл құралдар басқа объектілердің ішінде объектілері бар құжаттарды іздеуге мүмкіндік береді. Бұл әсіресе күрделі деректермен жұмыс істегенде пайдалы және дәлірек сұрауларды орындағыңыз келеді.
MongoDB ішінде кірістірілген сұрауды орындау үшін құжаттың ішкі өрістеріне қол жеткізу үшін нүкте операторын («.») пайдаланамыз. Мысалы, егер бізде тұтынушы құжаттарының жинағы болса және әрбір құжатта өз кезегінде «көше», «қала» және «ел» сияқты өрістері бар «мекен-жай» өрісі болса, біз белгілі бір қалада немесе елде тұратын барлық тұтынушыларды табу үшін сұрауларды орындай аламыз.
Кірістірілген сұраулардан басқа, MongoDB де ұсынады біріктіру операциялары Бұл операциялар біздің деректерімізде күрделі есептеулер жүргізуге мүмкіндік береді. Бұл әрекеттер бізге құжаттар жинағындағы белгілі бір өрістің ең үлкен немесе ең төменгі мәнін қосу, санау, орташалау немесе табу сияқты тапсырмаларды орындауға мүмкіндік береді.
MongoDB жүйесіндегі жинақтау операциялары әр кезең құжаттарда түрлендіруді жүзеге асыратын кезеңдердің тізбегі болып табылатын конвейер арқылы орындалады. Біз сұранысқа қосқымыз келетін құжаттарды сүзу үшін `$match`, құжаттарды критерий бойынша топтау үшін `$group`, нәтижелерде көрсеткіміз келетін өрістерді таңдау үшін `$project` және т.б. сияқты құбырдағы әртүрлі кезеңдерді пайдалана аламыз. Бұл біріктіру операциялары бізге MongoDB ішінде сақталған деректеріміз бойынша кеңейтілген есептеулер мен талдауларды орындауға үлкен икемділік береді.
– MongoDB ішіндегі сұрауларды оңтайландыру бойынша ұсыныстар
MongoDB ішіндегі сұрауларды оңтайландыру үшін белгілі бір ұсыныстарды орындау маңызды. Біріншіден, бұл орынды сәйкес көрсеткіштерді құру Ең жиі сұралатын жинақтар үшін MongoDB ішіндегі индекстер дерекқор механизміне ақпаратты тиімдірек іздеуге мүмкіндік беру арқылы деректерді іздеуді жылдамдатуға көмектеседі. Ол үшін жиі орындалатын сұрауларды талдап, сол сұрауларда пайдаланылатын өрістерде индекстер жасау керек.
Тағы бір маңызды ұсыныс қайтарылған өрістерді шектеңіз Сұрауларда. MongoDB жүйесінде сұрауды орындаған кезде сіз қайтарғыңыз келетін өрістерді көрсете аласыз. Құжат өлшемін азайту және сұрау өнімділігін жақсарту үшін тек қажетті өрістерді қайтару маңызды. Бұл жасауға болады әдісте қажетті өрістерді көрсете отырып, MongoDB ішіндегі проекцияны пайдалану find().
Соңында, бір маңызды ұсыныс бірнеше сұраулардың орнына біріктіруді пайдаланыңыз Мүмкіндігінше. MongoDB жүйесіндегі біріктіру бірнеше сұрау операцияларын бір біріне біріктіруге мүмкіндік береді және қамтамасыз етеді жоғары өнімділікБұл деректер бойынша статистиканы сүзу, топтау және есептеу сияқты әрекеттерді орындау кезінде әсіресе пайдалы. Агрегацияны пайдалану арқылы сервер мен қолданба арасындағы деректерді тасымалдау процесі болдырмайды, бұл келесіге әкеледі жақсы өнімділік және төменгі жүктеме желіде.
Мен Себастьян Видальмын, технологияға және өз қолыңызбен жасауға құмар компьютер инженері. Оның үстіне мен жасаушымын tecnobits.com сайтында, мен технологияны барлығына қолжетімді және түсінікті ету үшін оқулықтармен бөлісемін.