Vhura webinar "MongoDB Basics"

Shamwari, imwe kosi kutanga "Database" zvichaitika mangwana, saka takabata chidzidzo chakavhurika, kurekodha kwaunogona kuona pano. Panguva ino takataura nezve yakakurumbira MongoDB dhatabhesi: isu takadzidza zvimwe zvidiki, takatarisa izvo zvekutanga zvekushanda, kugona uye kuvaka. Isu takabatawo pane dzimwe Nyaya dzeMushandisi.

Vhura webinar "MongoDB Basics"

Webinar yakaitwa Ivan Belt, mukuru we server development at Citymobil.

MongoDB Features

MongoDB ndeye yakavhurika sosi gwaro-yakatarisana DBMS iyo isingade tsananguro yetafura schema. Inotsanangurwa seNoSQL uye inoshandisa BSON (binary JSON). Scalable kunze kwebhokisi, yakanyorwa muC ++ uye inotsigira JavaScript syntax. Iko hakuna SQL rutsigiro.

MongoDB ine vatyairi vemitauro yakawanda yakakurumbira yekuronga (C, C++, C#, Go, Java, JavaScript, Perl, PHP, Python, Ruby, nezvimwewo). Kune zvakare vatyairi vasina pamutemo uye vanotsigirwa nenharaunda kune mimwe mitauro yekuronga.

Zvakanaka, ngatitarisei mirairo yekutanga inogona kubatsira.

Saka, kuendesa MongoDB muDocker, tinonyora:

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

Ndizvo zvinoitika kutanga kwevatengi MongoDB:

Vhura webinar "MongoDB Basics"

Zvino ngatinyore yechinyakare Mhoro Nyika:

print (β€œHello world!”)

Vhura webinar "MongoDB Basics"

Mushure maizvozvo - ngatitange kutenderera:

Vhura webinar "MongoDB Basics"

Sezvamaona, pamberi pedu nguva dzose JS, uye MongoDB muturikiri weJavaScript akazara.

Nguva yekushandisa MongoDB?

Pane nyaya yekuti avhareji yekutanga muSilicon Valley ndiye munhu akavhura bhuku "HTML yeDummies" svondo rapfuura. Achasarudza murwi upi? Bvumirana kuti zviri nyore kwaari kana, nekuda kwezvikonzero zviri pachena, ane JavaScript mubrowser yake, Node.js iri kushanda pane sevha, uye JavaScript iri kushandawo mudhatabhesi. Iyi ipfungwa nhamba 1.

Chechipiri, pane kuita kukuru Peter Zaitsev, mumwe weakanakisa database nyanzvi muRussia. Mariri, Peter anotaura nezveMySQL neMongoDB, achitarisisa kuti riini uye chii chakanakisa kushandisa.

Chechitatu, ndinoda kusimbisa kuti MongoDB inoratidzwa nezvakanaka scalability - uye ichi ndicho chimwe chezvinhu zvakakosha zve database. Kana iwe usingazive pachine nguva kuti mutoro uchavei, MongoDB yakakwana. Mukuwedzera, inotsigira kunze-kwe-bhokisi maitiro akadai se sharding ΠΈ replication, uye izvi zvose zvinoitwa zvakajeka, kureva kuti, zviri nyore chaizvo kushanda.

Nezvekutaura terminology muMongoDB ipapo:

  • dhatabhesi idhatabhesi (zvirongwa, muunganidzwa wematafura);
  • muMongoDB pane chinhu chakadai kuunganidza - iyi ndiyo analogue yetafura uye seti yezvinyorwa izvo, zvine musoro, zvinofanirwa kubatanidzwa;
  • magwaro akafanana netambo.

Kugadzira dhatabhesi uye mibvunzo iri nyore

Kuti ugadzire dhatabhesi, unongoda kutanga kuishandisa:

use learn

Vhura webinar "MongoDB Basics"

Zvino ngatiite chidimbu chidiki chegwaro. Ngazvive, semuenzaniso, unicorn inonzi Aurora:

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

db - chinhu chepasi rose chekuwana dhatabhesi, kureva kuti, iyo "monga" pachayo. Inoshandiswa kupatsanura sh, kudzokorora - rs.

Chinhu chine mirairo ipi? db:

Vhura webinar "MongoDB Basics"

Saka, ngatidzokere kukuraira kwedu, semhedzisiro iyo iyo koni ichataura kuti mutsara mumwe wakaiswa:

Vhura webinar "MongoDB Basics"

Izwi unicorns muchikwata db.unicorns.insert({name: 'Aurora', gender: 'f', weight: 450}) zvinoreva muunganidzwa. Ndokumbira utarise pano kuti isu hatina kutsanangura kana kugadzira muunganidzwa, asi takangonyora 'unicorns', takaisa, uye isu tine muunganidzwa.

Uye izvi ndizvo zvatinokwanisa tora zvese zvatinounganidza:

db.getCollectionNames()

Zvichingoenda zvakadaro. Inogona isa imwe muunganidzwa:

Vhura webinar "MongoDB Basics"

Zvino ngatibvunzei muunganidzwa wakakwana (tinokuyeuchidza kuti mune yedu dhatabhesi yatove neruzivo nezve maunicorns maviri ane zita rimwe chete):

db.unicorns.find()

Ndokumbira utarise, heino JSON yedu (pane zita, murume kana mukadzi, uremu, chimwe chinhu chakasiyana chinozivisa):

Vhura webinar "MongoDB Basics"

Zvino ngatiisei mamwe maunicorn akati wandei ane mazita akafanana:

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

Uye ngatione zvakaitika:

Vhura webinar "MongoDB Basics"

Sezvauri kuona, isu tine mamwe minda: musha ΠΈ worm, iyo Aurora isina.

Ngatiwedzere mamwe mashoma 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}])

Saka, takaisa zvimwe zvinhu zvina tichishandisa JavaScript:

Vhura webinar "MongoDB Basics"

Mune maonero ako, ndeapi dhatabhesi ari nyore kuchengetedza data repasipoti: dhatabhesi rehukama kana Mongo?

Mhinduro iri pachena - mu Monga, uye muenzaniso uri pamusoro unoratidza izvi zvakanaka. Haisi chakavanzika kuti KLADR inorwadza muRussian Federation. Uye Monga inokodzera chaizvo nemakero, nekuti iwe unogona kuseta zvese senge, uye hupenyu huchava nyore. Uye yakanaka Mushandisi Nyaya yeMongoDB.

Ngatiwedzere mamwe ma 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});

Vhura webinar "MongoDB Basics"

Iye zvino teerera kune zvinyorwa. As ngoma Tinochengeta zvinhu zvose. Panewo ruzivo rwezvinoda unicorn, uye havasi vose vane ruzivo urwu. Saka mukati mune nhema full array.

Nenzira, kuratidza mhedzisiro zvakanyanya kunaka, unogona kufonera iyo nzira pakupera kweiyo yekutsvaga kuraira .pretty():

Vhura webinar "MongoDB Basics"

Kana uchida kuwana ruzivo nezve kukanganisa kwazvino, shandisa murairo unotevera:

db.getLastError()

Izvi zvinogona kuitwa mushure mekuiswa kwega kwega, kana iwe unogona kugadzirisa Nyora Kunetseka. Zviri nani kuverenga nezvazvo mukati zvinyorwa zvepamutemo, iyo, nenzira, inodzidzisa zvikuru muMonga. Nenzira, inowanikwawo paHabrΓ© nyaya yakanaka pachiitiko ichi.

Ngatienderei kune mimwe mibvunzo yakaoma

Kutsvaga kukosha kwemunda chaiko:

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

Nekunyora chikumbiro chakadaro, isu tinogashira runyoro rweese echirume unicorns mune inoburitsa console.

Unogonawo kuita bvunza pane akati wandei panguva imwe chete: nevarume uye nehuremu:

Vhura webinar "MongoDB Basics"

Pamusoro, teerera kune yakakosha $gt selector, iyo inokutendera iwe kubereka ese echirume unicorns anorema kupfuura mazana manomwe.

Unogona kutarisa munda uripo here?:

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

Kana zvakadaro:

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

Chikwata chinotevera chichaburitsa unicorns, vane mazita anotanga nemavara A kana a:

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

Zvino ngatifungei array search. Mubvunzo #1: Chii chichabuda murairo uyu:

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

Ndizvozvo: munhu wose anoda maapuro.

Iwo unotevera murairo unozodzosera chete iwo unicorn data ine maapuro nemanwiwa chete.

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

Uye mumwezve murairo:

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

Kwatiri, hazvidzose chero chinhu, sezvo kana isu tapfuura array, yekutanga element inofananidzwa neyekutanga, yechipiri neyechipiri, zvichingodaro. nechinzvimbo tsika idzi.

Uye izvi ndizvo zvinoita kutsvaga kuburikidza nehurongwa uchishandisa "OR" mushandisi:

Vhura webinar "MongoDB Basics"

Muenzaniso unotevera uchatiratidza tsvaga uchishandisa $all opareta. Uye pano kutevedzana hakuna kukosha:

Vhura webinar "MongoDB Basics"

Isu tinogonawo tsvaga maererano nekukura:

Vhura webinar "MongoDB Basics"

Asi ko kana isu tichida kuwana rondedzero ine saizi yakakura kupfuura imwe? Pane mushandisi weizvi $kupi, iyo iwe yaunogona kunyora zvakanyanya kuoma zvinhu:

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

Nenzira, kana iwe uchida kudzidzira, hezvo iwe faira nemirairo.

Cursor Features

Ngatitenderei zvishoma uye titaure mazwi mashoma nezve maficha eMonga:

  • find() uye mamwe mashandiro haadzose data - anodzosera inonzi "cursor";
  • chokwadi chekuti tinoona data richidhindwa ibasa remuturikiri.

Typing db.unicorns.find pasina maparentheses, tinowana kukurumidza:

Vhura webinar "MongoDB Basics"

Tinoramba tichizadzisa zvikumbiro

Kune zvakare iyo $in opareta:

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

Vhura webinar "MongoDB Basics"

Zvino ngatitaure nezve update. Semuenzaniso, ngatichinje huremu hweiyo Rooooodles unicorn:

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

Somugumisiro wezviito zvedu, gwaro ichagadziridzwa zvizere, uye munda mumwe chete wakatsanangurwa uchasara mairi:

Vhura webinar "MongoDB Basics"

Ndokunge, chinhu chega chinosara chechinhu chedu uremu 2222 uye, hongu, id.

Unogona kugadzirisa mamiriro acho uchishandisa $ set:

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

Vhura webinar "MongoDB Basics"

Zvinogonekawo kuwedzera kukosha:

Vhura webinar "MongoDB Basics"

Uye pane zvakare upsert - kusanganiswa kwekuvandudza uye kuisa:

Vhura webinar "MongoDB Basics"

Heino maitiro azvinoitwa kusarudzwa kwemunda:

Vhura webinar "MongoDB Basics"

Vhura webinar "MongoDB Basics"

Inoramba ichiwedzera mazwi mashomanana pamusoro tanhuka ΠΈ muganhu:

Vhura webinar "MongoDB Basics"

Shamwari, ndizvo chete, kana iwe uchida kuziva ruzivo, ona vhidhiyo yese. Uye usakanganwa kusiya mhinduro dzako!

Source: www.habr.com

Voeg