Opna vefnámskeið „MongoDB Basics“

Vinir, enn ein námskeiðið sett "gagnagrunnur" fer fram á morgun og því héldum við hefðbundna opna kennslustund sem hægt er að horfa á upptökuna af hér. Í þetta skiptið ræddum við um hinn vinsæla MongoDB gagnagrunn: við rannsökuðum nokkra fínleika, skoðuðum grunnatriði reksturs, getu og arkitektúr. Við komum líka inn á nokkur notendatilvik.

Opna vefnámskeið „MongoDB Basics“

Vefnámskeiðið var haldið Ivan Belt, yfirmaður netþjónaþróunar hjá Citymobil.

MongoDB eiginleikar

MongoDB er opinn uppspretta skjalamiðað DBMS sem krefst ekki lýsingar á töfluskemanu. Það er flokkað sem NoSQL og notar BSON (binary JSON). Stærðanlegt úr kassanum, skrifað í C++ og styður JavaScript setningafræði. Það er enginn SQL stuðningur.

MongoDB hefur rekla fyrir mörg vinsæl forritunarmál (C, C++, C#, Go, Java, JavaScript, Perl, PHP, Python, Ruby, osfrv.). Það eru líka til óopinberir og samfélagsstuddir reklar fyrir önnur forritunarmál.

Jæja, við skulum skoða grunnskipanirnar sem geta verið gagnlegar.

Svo, til að dreifa MongoDB í Docker, Við skrifum:

docker run -it --rm -p 127.0.0.1:27017:27017 
--name mongo-exp-project mongo
docker exec -it mongo-exp-project mongo

Þannig gerist það kynning viðskiptavina MongoDB:

Opna vefnámskeið „MongoDB Basics“

Nú skulum við skrifa hið hefðbundna Halló heimur:

print (“Hello world!”)

Opna vefnámskeið „MongoDB Basics“

Eftir það - byrjum hringrásina:

Opna vefnámskeið „MongoDB Basics“

Eins og þú tókst eftir, á undan okkur venjulegur JS, og MongoDB er fullgildur JavaScript túlkur.

Hvenær á að nota MongoDB?

Það er saga að meðaltal gangsetning í Silicon Valley sé sá sem opnaði bókina „HTML for Dummies“ fyrir viku síðan. Hvaða stafla mun hann velja? Sammála því að það er mjög þægilegt fyrir hann þegar hann er af augljósum ástæðum með JavaScript í vafranum sínum, Node.js er í gangi á þjóninum og JavaScript er líka í gangi í gagnagrunninum. Þetta er punktur númer 1.

Í öðru lagi er það frábær frammistaða Peter Zaitsev, einn besti gagnagrunnssérfræðingur Rússlands. Þar talar Peter um MySQL og MongoDB og tekur sérstaklega eftir því hvenær og hvað er best að nota.

Í þriðja lagi vil ég leggja áherslu á að MongoDB einkennist af góðu sveigjanleika - og þetta er einn af helstu eiginleikum gagnagrunnsins. Ef þú veist ekki fyrirfram hvað álagið verður, þá er MongoDB fullkomið. Að auki styður það út-af-the-kassa mynstur eins og riftun и afritun, og allt þetta er gert nokkuð gagnsætt, það er, það er mjög þægilegt að vinna.

Eins varðar hugtök í MongoDB þá:

  • gagnagrunnar eru gagnagrunnar (kerfi, töflusöfn);
  • í MongoDB er til eitthvað sem heitir safn - þetta er hliðstæða töflu og safn skjala sem rökrétt ættu að vera tengd;
  • skjöl eru hliðstæð streng.

Gagnagrunnsgerð og einfaldar fyrirspurnir

Til að búa til gagnagrunn þarftu bara að byrja að nota hann:

use learn

Opna vefnámskeið „MongoDB Basics“

Nú skulum við gera smá innskot af skjalinu. Láttu það til dæmis vera einhyrningur að nafni Aurora:

db.unicorns.insert({name: 'Aurora', gender: 'f', weight: 450})

db - alþjóðlegur hlutur til að fá aðgang að gagnagrunninum, það er í raun „monga“ sjálft. Notað til að klippa sh, til afritunar - rs.

Hvaða skipanir hefur hluturinn? db:

Opna vefnámskeið „MongoDB Basics“

Svo skulum við snúa aftur til skipunarinnar okkar, þar af leiðandi mun stjórnborðið tilkynna að ein lína hafi verið sett inn:

Opna vefnámskeið „MongoDB Basics“

Orð unicorns í liði db.unicorns.insert({name: 'Aurora', gender: 'f', weight: 450}) táknar safn. Vinsamlega athugið hér að við skrifuðum ekki eða bjuggum til safnið, heldur skrifuðum einfaldlega „einhyrninga“, settum inn innskot og við áttum safn.

Og svona getum við fáðu öll söfnin okkar:

db.getCollectionNames()

Og svo framvegis. Dós settu annan inn safn:

Opna vefnámskeið „MongoDB Basics“

Nú skulum við spyrja heill safn (Við minnum á að í okkar tilviki inniheldur gagnagrunnurinn þegar upplýsingar um tvo einhyrninga með sama nafni):

db.unicorns.find()

Vinsamlegast athugaðu, hér er JSON okkar (það er nafn, kyn, þyngd, eitthvert einstakt hlutauðkenni):

Opna vefnámskeið „MongoDB Basics“

Nú skulum við setja inn nokkra einhyrninga í viðbót með sömu nöfnum:

db.unicorns.insert({name: 'Leto', gender: 'm', 
home: 'Arrakeen', worm: false}) 
db.unicorns.insert({name: 'Leto', gender: 'm', 
home: 'Arrakeen', worm: false})

Og við skulum sjá hvað gerðist:

Opna vefnámskeið „MongoDB Basics“

Eins og þú sérð höfum við fleiri reiti: heim и ormur, sem Aurora á ekki.

Við skulum bæta við nokkrum einhyrningum í viðbót:

db.unicorns.insertMany([{name: 'Horny', dob: new Date(1992,2,13,7,47), loves: ['carrot','papaya'], weight: 600, gender: 'm', vampires: 63}, 
{name: 'Aurora', dob: new Date(1991, 0, 24, 13, 0), loves: ['carrot', 'grape'], weight: 450, gender: 'f', vampires: 43}, 
{name: 'Unicrom', dob: new Date(1973, 1, 9, 22, 10), loves: ['energon', 'redbull'], weight: 984, gender: 'm', vampires: 182}, 
{name: 'Roooooodles', dob: new Date(1979, 7, 18, 18, 44), loves: ['apple'], weight: 575, gender: 'm', vampires: 99}])

Svo við settum inn fjóra hluti í viðbót með JavaScript:

Opna vefnámskeið „MongoDB Basics“

Að þínu mati, í hvaða gagnagrunnum er hentugra að geyma vegabréfsgögn: venslagagnagrunna eða Mongo?

Svarið er augljóst - í Monga, og dæmið hér að ofan sýnir þetta vel. Það er ekkert leyndarmál að KLADR er sársauki í Rússlandi. Og Monga passar mjög vel við heimilisföng, því þú getur stillt allt sem fylki, og lífið verður miklu auðveldara. Og það er gott Notandamál fyrir MongoDB.

Við skulum bæta við fleiri einhyrningum:

db.unicorns.insert({name: 'Solnara', dob: new Date(1985, 6, 4, 2, 1), loves:['apple', 'carrot', 'chocolate'], weight:550, gender:'f', vampires:80}); 
db.unicorns.insert({name:'Ayna', dob: new Date(1998, 2, 7, 8, 30), loves: ['strawberry', 'lemon'], weight: 733, gender: 'f', vampires: 40}); 
db.unicorns.insert({name:'Kenny', dob: new Date(1997, 6, 1, 10, 42), loves: ['grape', 'lemon'], weight: 690, gender: 'm', vampires: 39}); 
db.unicorns.insert({name: 'Raleigh', dob: new Date(2005, 4, 3, 0, 57), loves: ['apple', 'sugar'], weight: 421, gender: 'm', vampires: 2}); 
db.unicorns.insert({name: 'Leia', dob: new Date(2001, 9, 8, 14, 53), loves: ['apple', 'watermelon'], weight: 601, gender: 'f', vampires: 33}); 
db.unicorns.insert({name: 'Pilot', dob: new Date(1997, 2, 1, 5, 3), loves: ['apple', 'watermelon'], weight: 650, gender: 'm', vampires: 54}); 
db.unicorns.insert({name: 'Nimue', dob: new Date(1999, 11, 20, 16, 15), loves: ['grape', 'carrot'], weight: 540, gender: 'f'}); 
db.unicorns.insert({name: 'Dunx', dob: new Date(1976, 6, 18, 18, 18), loves: ['grape', 'watermelon'], weight: 704, gender: 'm', vampires: 165});

Opna vefnámskeið „MongoDB Basics“

Gefðu nú gaum að skjölunum. Sem trommur Við geymum heila hluti. Það eru líka upplýsingar um hvað einhyrningur elskar og ekki allir hafa þessar upplýsingar. Svo inni liggur fullt úrval.

Við the vegur, til að sýna niðurstöðurnar fallegri, getur þú kallað aðferðina í lok leitarskipunarinnar .pretty():

Opna vefnámskeið „MongoDB Basics“

Ef þú þarft að fá upplýsingar um nýjustu villuna, notaðu eftirfarandi skipun:

db.getLastError()

Þetta er hægt að gera eftir hverja innsetningu, eða þú getur stillt Write Concern. Það er betra að lesa um það í opinber skjöl, sem við the vegur er mjög fræðandi í Monga. Við the vegur, það er líka fáanlegt á Habré góð grein af þessu tilefni.

Við skulum halda áfram að flóknari fyrirspurnum

Fyrirspurn um nákvæmlega reitgildi:

db.unicorns.find({gender: 'm'})

Með því að skrifa slíka beiðni fáum við lista yfir alla karlkyns einhyrninga í vélaúttakinu.

Þú getur líka gert fyrirspurn á nokkrum sviðum í einu: eftir kyni og eftir þyngd:

Opna vefnámskeið „MongoDB Basics“

Hér að ofan, gaum að sérstöku $gt veljari, sem gerir þér kleift að rækta alla karlkyns einhyrninga sem vega meira en 700.

Þú getur athugað er völlurinn yfirleitt til?:

db.unicorns.find({vampires: {$exists: false}})

Eða svo:

db.unicorns.find({'parents.father': {$exists: true}})

Næsta lið mun draga fram einhyrningana, nöfn þeirra byrja á bókstöfunum A eða a:

db.unicorns.find({name: {$regex: "^[Aa]"}})

Nú skulum við íhuga fylkisleit. Spurning #1: Hvað mun þessi skipun gefa út:

db.unicorns.find({loves:'apple'})

Það er rétt: allir sem elska epli.

Eftirfarandi skipun mun aðeins skila þeim einhyrningsgögnum sem innihalda aðeins epli og vatnsmelóna:

db.unicorns.find({loves:[ "apple", "watermelon" ]})

Og enn ein skipunin:

db.unicorns.find({loves:[ "watermelon", "apple" ]})

Í okkar tilviki mun það ekki skila neinu, þar sem þegar við göngum framhjá fylki er fyrsta þátturinn borinn saman við þann fyrsta, sá seinni við hinn, osfrv. Það er, fylkið verður líka að passa saman eftir stöðu þessi gildi.

Og svona lítur það út að leita í gegnum fylki með því að nota "OR" stjórnanda:

Opna vefnámskeið „MongoDB Basics“

Eftirfarandi dæmi mun sýna okkur leitaðu með $all símafyrirtækinu. Og hér skiptir röðin ekki máli:

Opna vefnámskeið „MongoDB Basics“

Einnig getum við leita eftir fylkisstærð:

Opna vefnámskeið „MongoDB Basics“

En hvað ef við viljum finna fylki sem er stærri en einn? Það er rekstraraðili fyrir þetta $hvar, sem þú getur skrifað flóknari hluti með:

db.unicorns.find({$where: function() { return this.loves && (this.loves.length > 1) } })

Við the vegur, ef þú vilt æfa, þarna ertu skrá með skipunum.

Bendill eiginleikar

Við skulum víkja aðeins frá og segja nokkur orð um eiginleika Monga:

  • find() og aðrar aðgerðir skila ekki gögnum - þær skila svokölluðum „bendili“;
  • sú staðreynd að við sjáum gögnin vera prentuð er verk túlksins.

Vélritun db.unicorns.find án sviga fáum við vísbendingu:

Opna vefnámskeið „MongoDB Basics“

Við höldum áfram að uppfylla beiðnir

Það er líka $in símafyrirtækið:

db.unicorns.find({weight: {$in: [650, 704]}})

Opna vefnámskeið „MongoDB Basics“

Nú skulum við tala um uppfærslu. Til dæmis skulum við breyta þyngd Rooooodles einhyrningsins:

db.unicorns.update({name: "Roooooodles"}, {weight: 2222})

Sem afleiðing af aðgerðum okkar, skjalið verður algjörlega uppfært, og aðeins einn tilgreindur reitur verður eftir í því:

Opna vefnámskeið „MongoDB Basics“

Það er, það eina sem verður eftir fyrir hlut okkar er þyngdin 2222 og auðvitað id.

Þú getur leiðrétt ástandið með því að nota $sett:

db.unicorns.update({_id: ObjectId("5da6ea4d9703b8be0089e6db")}, {$set: { "name" : "Roooooodles", "dob" : ISODate("1979-08-18T18:44:00Z"), "loves" : [ "apple" ], "gender" : "m", "vampires" : 99}})

Opna vefnámskeið „MongoDB Basics“

Það er líka hægt hækka gildi:

Opna vefnámskeið „MongoDB Basics“

Og það er líka uppnám - samsetning af uppfærslu og innsetningu:

Opna vefnámskeið „MongoDB Basics“

Svona er það gert val á sviði:

Opna vefnámskeið „MongoDB Basics“

Opna vefnámskeið „MongoDB Basics“

Eftir er að bæta nokkrum orðum um sleppa и takmarka:

Opna vefnámskeið „MongoDB Basics“

Samstarfsmenn, það er allt, ef þú vilt vita smáatriðin, horfa á allt myndbandið. Og ekki gleyma að skilja eftir athugasemdir þínar!

Heimild: www.habr.com

Bæta við athugasemd