Iftaħ webinar "MongoDB Basics"

Ħbieb, tnedija ta’ kors ieħor "Database" se ssir għada, għalhekk għamilna lezzjoni miftuħa tradizzjonali, li r-recording tagħha tistgħu taraw hawn. Din id-darba tkellimna dwar id-database MongoDB popolari: studjajna xi wħud mill-irqaq, ħares lejn il-baŜi tal-operat, il-kapaċitajiet u l-arkitettura. Missajna wkoll xi Utenti Każijiet.

Iftaħ webinar "MongoDB Basics"

Il-webinar sar Ivan Belt, kap tal-iżvilupp tas-server f'Citymobil.

Karatteristiċi ta' MongoDB

MongoDB huwa DBMS ta' sors miftuħ orjentat lejn id-dokument li ma jeħtieġx deskrizzjoni tal-iskema tat-tabella. Huwa kklassifikat bħala NoSQL u juża BSON (JSON binarju). Skalabbli barra mill-kaxxa, miktub f'C++ u jappoġġja sintassi JavaScript. M'hemm l-ebda appoġġ SQL.

MongoDB għandu sewwieqa għal ħafna lingwi ta' programmar popolari (C, C++, C#, Go, Java, JavaScript, Perl, PHP, Python, Ruby, eċċ.). Hemm ukoll sewwieqa mhux uffiċjali u appoġġjati mill-komunità għal lingwi ta' programmar oħra.

Ukoll, ejja nħarsu lejn il-kmandi bażiċi li jistgħu jkunu utli.

Allura, biex tuża MongoDB f'Docker, niktbu:

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

Hekk jiġri tnedija tal-klijent MongoDB:

Iftaħ webinar "MongoDB Basics"

Issa ejja niktbu dik tradizzjonali Hello dinja:

print (“Hello world!”)

Iftaħ webinar "MongoDB Basics"

Wara - ejja nibdew iċ-ċiklu:

Iftaħ webinar "MongoDB Basics"

Kif innutajt, quddiemna regolari JS, u MongoDB huwa interpretu JavaScript sħiħ.

Meta tuża MongoDB?

Hemm storja li l-istartjar medja f'Silicon Valley hija l-persuna li fetħet il-ktieb "HTML for Dummies" ġimgħa ilu. Liema munzell se jagħżel? Naqbel li huwa konvenjenti ħafna għalih meta, għal raġunijiet ovvji, ikollu JavaScript fil-browser tiegħu, Node.js qed jaħdem fuq is-server, u JavaScript qed jaħdem ukoll fid-database. Dan huwa l-punt numru 1.

It-tieni, hemm prestazzjoni kbira Peter Zaitsev, wieħed mill-aqwa speċjalisti tad-databases fir-Russja. Fiha, Peter jitkellem dwar MySQL u MongoDB, filwaqt li jagħti attenzjoni speċjali għal meta u x'inhu l-aħjar li tuża.

It-tielet nett, nixtieq nenfasizza li MongoDB huwa kkaratterizzat minn tajjeb iskalabbiltà - u din hija waħda mill-karatteristiċi ewlenin tad-database. Jekk ma tafx minn qabel x'se tkun it-tagħbija, MongoDB hija perfetta. Barra minn hekk, jappoġġja mudelli barra mill-kaxxa bħal sharding и replikazzjoni, u dan kollu jsir pjuttost trasparenti, jiġifieri, huwa konvenjenti ħafna li taħdem.

Fir-rigward terminoloġija f'MongoDB imbagħad:

  • databases huma databases (skemi, kollezzjonijiet ta' tabelli);
  • f'MongoDB hemm ħaġa bħal ġabra - dan huwa analogu ta 'tabella u sett ta' dokumenti li, loġikament, għandhom ikunu konnessi;
  • dokumenti huma analogi għal string.

Ħolqien tad-database u mistoqsijiet sempliċi

Biex toħloq database, għandek bżonn biss tibda tużaha:

use learn

Iftaħ webinar "MongoDB Basics"

Issa ejja nagħmlu daħħal żgħir tad-dokument. Ħalliha tkun, pereżempju, unicorn jisimha Aurora:

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

db - oġġett globali għall-aċċess għad-database, jiġifieri, fil-fatt, il-"monga" nnifisha. Użat għat-tqattigħ sh, għar-replikazzjoni - rs.

X'kmandi għandu l-oġġett? db:

Iftaħ webinar "MongoDB Basics"

Allura, ejja nerġgħu lura għall-kmand tagħna, bħala riżultat ta 'dan il-console se tirrapporta li linja waħda ġiet imdaħħla:

Iftaħ webinar "MongoDB Basics"

Word unicorns f’tim db.unicorns.insert({name: 'Aurora', gender: 'f', weight: 450}) tindika kollezzjoni. Jekk jogħġbok innota hawn li aħna ma ddeskrivejna jew ħloqna l-kollezzjoni, iżda sempliċement ktibna 'unicorns', għamilna inserzjoni, u kellna kollezzjoni.

U hekk nistgħu tikseb il-kollezzjonijiet kollha tagħna:

db.getCollectionNames()

U l-bqija. Can daħħal ieħor ġbir:

Iftaħ webinar "MongoDB Basics"

Issa ejja nistaqsu ġbir komplut (infakkrukom li fil-każ tagħna d-database diġà fiha informazzjoni dwar żewġ unicorns bl-istess isem):

db.unicorns.find()

Jekk jogħġbok innota, hawn il-JSON tagħna (hemm isem, sess, piż, xi identifikatur uniku tal-oġġett):

Iftaħ webinar "MongoDB Basics"

Issa ejja daħħal koppja oħra unicorns bl-istess ismijiet:

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

U ejja naraw x'ġara:

Iftaħ webinar "MongoDB Basics"

Kif tistgħu taraw, għandna oqsma addizzjonali: dar и dudu, li Aurora m'għandhiex.

Ejja nżidu ftit aktar unicorns:

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}])

Allura, daħħalna erba' oġġetti oħra bl-użu ta' JavaScript:

Iftaħ webinar "MongoDB Basics"

Fl-opinjoni tiegħek, f'liema databases huwa aktar konvenjenti li tinħażen id-dejta tal-passaporti: databases relazzjonali jew Mongo?

It-tweġiba hija ovvja - f'Monga, u l-eżempju ta 'hawn fuq juri dan sew. Mhuwiex sigriet li KLADR huwa uġigħ fil-Federazzjoni Russa. U Monga taqbel tajjeb ħafna mal-indirizzi, għax tista 'tissettja kollox bħala firxa, u l-ħajja tkun ħafna aktar faċli. U hija waħda tajba Każ tal-Utent għal MongoDB.

Ejja nżidu aktar unicorns:

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});

Iftaħ webinar "MongoDB Basics"

Issa oqgħod attent għad-dokumenti. Kif tanbur Aħna naħżnu oġġetti sħaħ. Hemm ukoll informazzjoni dwar dak li jħobb unicorn, u mhux kulħadd għandu din l-informazzjoni. Allura ġewwa tinsab firxa sħiħa.

Mill-mod, biex turi r-riżultati b'mod aktar sabiħ, tista 'ssejjaħ il-metodu fl-aħħar tal-kmand tat-tfittxija .pretty():

Iftaħ webinar "MongoDB Basics"

Jekk għandek bżonn tikseb informazzjoni dwar l-aħħar żball, uża l-kmand li ġej:

db.getLastError()

Dan jista 'jsir wara kull inserzjoni, jew tista' tikkonfigura Write Concern. Huwa aħjar li taqra dwarha fi dokumentazzjoni uffiċjali, li, mill-mod, hija informattiva ħafna f'Monga. Mill-mod, huwa wkoll disponibbli fuq Habré artiklu tajjeb f’din l-okkażjoni.

Ejja ngħaddu għal mistoqsijiet aktar kumplessi

Mistoqsija għall-valur eżatt tal-qasam:

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

Billi tikteb talba bħal din, se nirċievu lista tal-unicorns maskili kollha fil-output tal-console.

Tista 'wkoll tagħmel mistoqsija fuq diversi oqsma f'daqqa: skont is-sess u l-piż:

Iftaħ webinar "MongoDB Basics"

Hawn fuq, agħti attenzjoni għall-ispeċjali $gt selettur, li jippermettilek li trabbi l-unicorns maskili kollha li jiżnu aktar minn 700.

Tista 'tiċċekkja il-qasam jeżisti xejn?:

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

Jew hekk:

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

It-tim li jmiss se joħroġ l-unicorns, li isimhom jibda bl-ittri A jew a:

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

Issa tikkunsidra tfittxija fil-firxa. Mistoqsija #1: X'se joħroġ dan il-kmand:

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

Hekk hu: kull min iħobb it-tuffieħ.

Il-kmand li ġej se jirritorna biss dik id-dejta tal-unicorn li jkun fiha tuffieħ u dulliegħ biss:

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

U kmand ieħor:

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

Fil-każ tagħna, ma jirritorna xejn, peress li meta ngħaddu firxa, l-ewwel element jitqabbel ma 'l-ewwel, it-tieni mat-tieni, eċċ. Jiġifieri, l-array għandu wkoll jaqbel. mill-pożizzjoni dawn il-valuri.

U dan huwa kif jidher tiftix minn firxa bl-użu tal-operatur "OR".:

Iftaħ webinar "MongoDB Basics"

L-eżempju li ġej jurina tfittxija bl-użu $all-operatur. U hawn is-sekwenza mhix importanti:

Iftaħ webinar "MongoDB Basics"

Nistgħu wkoll fittex skond id-daqs tal-firxa:

Iftaħ webinar "MongoDB Basics"

Imma x'jiġri jekk irridu nsibu firxa li d-daqs tagħha huwa akbar minn wieħed? Hemm operatur għal dan $fejn, li biha tista' tikteb affarijiet aktar kumplessi:

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

Mill-mod, jekk trid tipprattika, hemm int fajl bi kmandi.

Karatteristiċi tal-Kursur

Ejja nidħlu ftit u ngħidu ftit kliem dwar il-karatteristiċi ta 'Monga:

  • find() u operazzjonijiet oħra ma jirritornawx data - jirritornaw l-hekk imsejjaħ "cursor";
  • il-fatt li naraw id-data tiġi stampata huwa xogħol l-interpretu.

Ittajpjar db.unicorns.find mingħajr parentesi, irridu l-pront:

Iftaħ webinar "MongoDB Basics"

Inkomplu nissodisfaw it-talbiet

Hemm ukoll l-operatur $in:

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

Iftaħ webinar "MongoDB Basics"

Issa ejja nitkellmu dwar l-aġġornament. Pereżempju, ejja nbiddlu l-piż tal-unicorn Rooooodles:

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

Bħala riżultat ta 'l-azzjonijiet tagħna, id-dokument se jkun kompletament aġġornat, u qasam speċifikat wieħed biss se jibqa' fih:

Iftaħ webinar "MongoDB Basics"

Jiġifieri, l-unika ħaġa li se tibqa 'għall-oġġett tagħna hija l-piż 2222 u, ovvjament, id.

Tista 'tikkoreġi s-sitwazzjoni bl-użu $sett:

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

Iftaħ webinar "MongoDB Basics"

Hemm ukoll il-possibbiltà valuri inkrementali:

Iftaħ webinar "MongoDB Basics"

U hemm ukoll taqleb - kombinazzjoni ta' aġġornament u daħħal:

Iftaħ webinar "MongoDB Basics"

Hawn kif isir għażla tal-qasam:

Iftaħ webinar "MongoDB Basics"

Iftaħ webinar "MongoDB Basics"

Fadal biex iżżid ftit kliem dwar skip и jillimitaw:

Iftaħ webinar "MongoDB Basics"

Kollegi, dak kollu, jekk trid tkun taf id-dettalji, ara l-video kollu. U tinsiex tħalli l-kummenti tiegħek!

Sors: www.habr.com

Żid kumment