Vinir, enn ein námskeiðið sett
Vefnámskeiðið var haldið
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:
Nú skulum við skrifa hið hefðbundna Halló heimur:
print (“Hello world!”)
Eftir það - byrjum hringrásina:
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ð
Í þ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
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:
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:
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:
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):
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:
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:
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});
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()
:
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ð í
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:
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:
Eftirfarandi dæmi mun sýna okkur leitaðu með $all símafyrirtækinu. Og hér skiptir röðin ekki máli:
Einnig getum við leita eftir fylkisstærð:
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,
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:
Við höldum áfram að uppfylla beiðnir
Það er líka $in símafyrirtækið:
db.unicorns.find({weight: {$in: [650, 704]}})
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í:
Þ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}})
Það er líka hægt hækka gildi:
Og það er líka uppnám - samsetning af uppfærslu og innsetningu:
Svona er það gert val á sviði:
Eftir er að bæta nokkrum orðum um sleppa и takmarka:
Samstarfsmenn, það er allt, ef þú vilt vita smáatriðin,
Heimild: www.habr.com