Fosgail webinar "MongoDB Basics"

Caraidean, cur air bhog cùrsa eile "Stòr-dàta" a’ gabhail àite a-màireach, agus mar sin chùm sinn leasan fosgailte traidiseanta, agus chì thu an clàradh an seo. An turas seo bhruidhinn sinn air stòr-dàta mòr-chòrdte MongoDB: rinn sinn sgrùdadh air cuid de na seòlaidhean, choimhead sinn air bunaitean obrachaidh, comasan agus ailtireachd. Bhruidhinn sinn cuideachd air cuid de chùisean cleachdaiche.

Fosgail webinar "MongoDB Basics"

Chaidh an webinar a chumail Ivan Belt, ceannard leasachadh frithealaiche aig Citymobil.

Feartan MongoDB

MongoDB na DBMS stòr fosgailte a tha stèidhichte air sgrìobhainn nach eil feumach air tuairisgeul air sgeama a’ bhùird. Tha e air a sheòrsachadh mar NoSQL agus a’ cleachdadh BSON (JSON binary). Scalable a-mach às a’ bhogsa, sgrìobhte ann an C ++ agus a’ toirt taic do cho-chòrdadh JavaScript. Chan eil taic SQL ann.

Tha draibhearan aig MongoDB airson mòran chànanan prògramaidh mòr-chòrdte (C, C ++, C #, Go, Java, JavaScript, Perl, PHP, Python, Ruby, msaa). Tha draibhearan neo-oifigeil ann cuideachd le taic coimhearsnachd airson cànanan prògramaidh eile.

Uill, leig dhuinn sùil a thoirt air na h-òrdughan bunaiteach a dh'fhaodas a bhith feumail.

Mar sin, gus MongoDB a chuir an sàs ann an Docker, tha sinn a 'sgrìobhadh:

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

Mar sin tha e a’ tachairt cur air bhog neach-dèiligidh MongoDB:

Fosgail webinar "MongoDB Basics"

A-nis leig dhuinn am fear traidiseanta a sgrìobhadh Hàlo a Shaoghail:

print (“Hello world!”)

Fosgail webinar "MongoDB Basics"

Às deidh sin - tòisichidh sinn air a’ chearcall:

Fosgail webinar "MongoDB Basics"

Mar a mhothaich thu, romhainn JS cunbhalach, agus tha MongoDB na eadar-theangair JavaScript làn-chuimseach.

Cuin a chleachdas tu MongoDB?

Tha sgeulachd ann gur e an ìre tòiseachaidh cuibheasach ann an Silicon Valley an neach a dh’ fhosgail an leabhar “HTML for Dummies” o chionn seachdain. Dè an stac a thaghas e? Aontaich gu bheil e gu math goireasach dha nuair, airson adhbharan follaiseach, tha JavaScript aige sa bhrobhsair aige, tha Node.js a’ ruith air an fhrithealaiche, agus tha JavaScript cuideachd a’ ruith san stòr-dàta. Is e seo puing àireamh 1.

San dàrna h-àite, tha coileanadh sàr-mhath Peter Zaitsev, aon de na h-eòlaichean stòr-dàta as fheàrr san Ruis. Ann, tha Pàdraig a 'bruidhinn air MySQL agus MongoDB, a' toirt aire shònraichte air cuin agus dè as fheàrr a chleachdadh.

San treas àite, bu mhath leam cuideam a chuir air gu bheil MongoDB air a chomharrachadh le math scalability - agus is e seo aon de phrìomh fheartan an stòr-dàta. Mura h-eil fios agad ro-làimh dè an luchd a bhios ann, tha MongoDB foirfe. A bharrachd air an sin, tha e a’ toirt taic do phàtranan taobh a-muigh a’ bhogsa leithid rùsgadh и mac-samhail, agus tha seo uile air a dhèanamh gu math follaiseach, is e sin, tha e gu math goireasach a bhith ag obair.

A thaobh briathrachas ann am MongoDB an uairsin:

  • tha stòran-dàta nan stòran-dàta (sgeama, cruinneachaidhean chlàran);
  • ann am MongoDB tha leithid de rud ann an cruinneachadh - is e seo analogue de bhòrd agus seata de sgrìobhainnean a bu chòir, gu loidsigeach, a bhith ceangailte;
  • tha sgrìobhainnean co-chosmhail ri sreang.

Cruthachadh stòr-dàta agus ceistean sìmplidh

Gus stòr-dàta a chruthachadh, cha leig thu leas ach tòiseachadh air a chleachdadh:

use learn

Fosgail webinar "MongoDB Basics"

A-nis leig dhuinn cuir a-steach beag den sgrìobhainn. Biodh e, mar eisimpleir, aon-adharcach leis an t-ainm Aurora:

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

db - rud cruinneil airson faighinn chun stòr-dàta, is e sin, gu dearbh, am “monga” fhèin. Air a chleachdadh airson sgoltadh sh, airson ath-riochdachadh - rs.

Dè na h-òrdughan a tha aig an nì? db:

Fosgail webinar "MongoDB Basics"

Mar sin, tillidh sinn chun àithne againn, agus mar thoradh air an sin bidh an consol ag aithris gu bheil aon loidhne air a chuir a-steach:

Fosgail webinar "MongoDB Basics"

Am facal unicorns ann an sgioba db.unicorns.insert({name: 'Aurora', gender: 'f', weight: 450}) a’ comharrachadh cruinneachadh. Thoir an aire an seo nach do rinn sinn cunntas no cruthachadh air a’ chruinneachadh, ach dìreach sgrìobh sinn ‘unicorns’, rinn sinn cuir a-steach, agus bha cruinneachadh againn.

Agus seo mar as urrainn dhuinn faigh na cruinneachaidhean againn uile:

db.getCollectionNames()

Agus mar sin air adhart. Faodaidh cuir a-steach fear eile cruinneachadh:

Fosgail webinar "MongoDB Basics"

A-nis leig dhuinn faighneachd cruinneachadh iomlan (tha sinn gad chuimhneachadh gu bheil fiosrachadh anns an stòr-dàta againn mu dhà aon-adharcach leis an aon ainm):

db.unicorns.find()

Thoir an aire, seo an JSON againn (tha ainm, gnè, cuideam, aithnichear nì sònraichte):

Fosgail webinar "MongoDB Basics"

A-nis leig dhuinn a-steach càraid a bharrachd aon-adharcach leis na h-aon ainmean:

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

Agus chì sinn dè thachair:

Fosgail webinar "MongoDB Basics"

Mar a chì thu, tha raointean a bharrachd againn: dachaigh и worm, rud nach eil aig Aurora.

Nach cuir sinn beagan a bharrachd unicorns ris:

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

Mar sin, chuir sinn a-steach ceithir nithean eile a’ cleachdadh JavaScript:

Fosgail webinar "MongoDB Basics"

Nad bheachd-sa, anns na stòran-dàta a tha e nas freagarraiche dàta cead-siubhail a stòradh: stòran-dàta dàimheach no Mongo?

Tha am freagairt follaiseach - ann am Monga, agus tha an eisimpleir gu h-àrd a 'sealltainn seo gu math. Chan eil e na dhìomhaireachd gu bheil KLADR na phian ann an Caidreachas na Ruis. Agus tha Monga a 'freagairt gu math ri seòlaidhean, oir faodaidh tu a h-uile càil a shuidheachadh mar raon, agus bidh beatha mòran nas fhasa. Agus 's e fear math a th' ann Cùis cleachdaiche airson MongoDB.

Nach cuir sinn barrachd unicorns ris:

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

Fosgail webinar "MongoDB Basics"

A-nis thoir aire do na sgrìobhainnean. As druma Bidh sinn a 'stòradh stuthan slàn. Tha fiosrachadh ann cuideachd mu na tha gaol aig aon-adharcach, agus chan eil am fiosrachadh seo aig a h-uile duine. Mar sin breugan a-staigh sreath iomlan.

Co-dhiù, gus na toraidhean a thaisbeanadh nas bòidhche, faodaidh tu am modh a ghairm aig deireadh an àithne sgrùdaidh .pretty():

Fosgail webinar "MongoDB Basics"

Ma dh'fheumas tu faighinn fiosrachadh mun mhearachd as ùire, cleachd an òrdugh a leanas:

db.getLastError()

Faodar seo a dhèanamh às deidh gach cuir a-steach, no faodaidh tu Write Concern a rèiteachadh. Tha e nas fheàrr leughadh mu dheidhinn ann an sgrìobhainnean oifigeil, a tha, leis an t-slighe, gu math fiosrachail ann am Monga. Co-dhiù, tha e cuideachd ri fhaighinn air Habré artaigil math mu dheidhinn seo.

Gluaisidh sinn air adhart gu ceistean nas iom-fhillte

Ceist airson dearbh luach an raoin:

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

Le bhith a’ sgrìobhadh iarrtas mar seo, gheibh sinn liosta de na h-aon-adharcaich fhireann uile ann an toradh a’ chonsail.

Faodaidh tu cuideachd a dhèanamh ceist air grunn raointean aig an aon àm: a rèir gnè agus cuideam:

Fosgail webinar "MongoDB Basics"

Gu h-àrd, thoir aire don rud sònraichte $gt roghnaichear, a leigeas leat briodadh aon-adharcach fireann le cuideam nas motha na 700.

Faodaidh tu sgrùdadh a dhèanamh a bheil an raon ann idir?:

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

No mar sin:

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

Bheir an ath sgioba a-mach na h-aon-adharcaich, aig a bheil ainmean a’ tòiseachadh leis na litrichean A neo a:

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

A-nis leig dhuinn beachdachadh lorg array. Ceist #1: Dè a bheir an àithne seo a-mach:

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

Tha sin ceart: a h-uile duine a tha dèidheil air ùbhlan.

Cha till an àithne a leanas ach an dàta aon-adharcach sin anns a bheil a-mhàin ùbhlan agus watermelons:

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

Agus aon òrdugh eile:

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

Anns a 'chùis againn, cha toir e rud sam bith air ais, oir nuair a thèid sinn seachad air sreath, tha a' chiad eileamaid air a choimeas ris a 'chiad fhear, an dàrna fear leis an dàrna fear, msaa. 'S e sin, feumaidh an t-sreath a bhith co-ionnan. a rèir suidheachadh na luachan seo.

Agus seo mar a tha e coltach a’ rannsachadh tro raon a’ cleachdadh a’ ghnìomhaiche “OR”.:

Fosgail webinar "MongoDB Basics"

Nochdaidh an eisimpleir a leanas dhuinn rannsaich a’ cleachdadh gnìomhaiche $all. Agus an seo tha an sreath neo-chudromach:

Fosgail webinar "MongoDB Basics"

Faodaidh sinn cuideachd lorg a rèir meud eagrachaidh:

Fosgail webinar "MongoDB Basics"

Ach dè ma tha sinn airson raon a lorg aig a bheil meud nas motha na aon? Tha gnìomhaiche ann airson seo $ càite, leis an urrainn dhut rudan nas iom-fhillte a sgrìobhadh:

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

Air an t-slighe, ma tha thu airson eacarsaich, siud thu faidhle le òrdughan.

Feartan cùrsair

Leigamaid beagan air falbh agus abair beagan fhaclan mu fheartan Monga:

  • lorg () agus cha bhith gnìomhachdan eile a’ tilleadh dàta - bidh iad a’ tilleadh “cursair” ris an canar;
  • is e obair an eadar-theangair a chì sinn an dàta ga chlò-bhualadh.

A’ sgrìobhadh db.unicorns.lorg às aonais bracaidean, gheibh sinn am brosnachadh:

Fosgail webinar "MongoDB Basics"

Tha sinn a’ leantainn oirnn a’ coileanadh iarrtasan

Tha an gnìomhaiche $in ann cuideachd:

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

Fosgail webinar "MongoDB Basics"

A-nis bruidhnidh sinn mu ùrachadh. Mar eisimpleir, atharraichidh sinn cuideam an aon-adharcach Rooooodles:

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

Mar thoradh air na gnìomhan againn, tha an sgrìobhainn thèid ùrachadh gu tur, agus cha bhi ach aon raon ainmichte air fhàgail ann:

Fosgail webinar "MongoDB Basics"

Is e sin, is e an aon rud a dh'fhuiricheas airson ar nì an cuideam 2222 agus, gu dearbh, id.

Faodaidh tu an suidheachadh a cheartachadh le bhith a’ cleachdadh $ seata:

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

Fosgail webinar "MongoDB Basics"

Tha e comasach cuideachd luachan àrdachadh:

Fosgail webinar "MongoDB Basics"

Agus tha cuideachd reasgach - measgachadh de ùrachadh agus cuir a-steach:

Fosgail webinar "MongoDB Basics"

Seo mar a tha e air a dhèanamh taghadh raoin:

Fosgail webinar "MongoDB Basics"

Fosgail webinar "MongoDB Basics"

Tha e fhathast ri beagan fhaclan a chur ris mu dheidhinn skip и cuingealachadh:

Fosgail webinar "MongoDB Basics"

A cho-obraichean, tha sin uile, ma tha thu airson faighinn a-mach mun fhiosrachadh, coimhead air a’ bhidio gu lèir. Agus na dìochuimhnich na beachdan agad fhàgail!

Source: www.habr.com

Cuir beachd ann