Ṣii webinar "Awọn ipilẹ MongoDB"

Awọn ọrẹ, ifilọlẹ ikẹkọ miiran "Ibi ipamọ data" yoo waye ni ọla, nitorinaa a ṣe ikẹkọ ṣiṣi ibile kan, gbigbasilẹ eyiti o le wo nibi. Ni akoko yii a sọrọ nipa aaye data MongoDB olokiki: a ṣe iwadi diẹ ninu awọn arekereke, wo awọn ipilẹ ti iṣẹ, awọn agbara ati faaji. A tun kan diẹ ninu awọn ọran olumulo.

Ṣii webinar "Awọn ipilẹ MongoDB"

Webinar ti waye Ivan igbanu, olori idagbasoke olupin ni Citymobil.

MongoDB Awọn ẹya ara ẹrọ

MongoDB jẹ DBMS ti o da lori iwe orisun ṣiṣi ti ko nilo ijuwe ti ero tabili. O ti pin si NoSQL o si nlo BSON (alakomeji JSON). Ṣe iwọn jade kuro ninu apoti, ti a kọ sinu C ++ ati atilẹyin sintasi JavaScript. Ko si atilẹyin SQL.

MongoDB ni awọn awakọ fun ọpọlọpọ awọn ede siseto olokiki (C, C++, C #, Go, Java, JavaScript, Perl, PHP, Python, Ruby, bbl). Awọn awakọ laigba aṣẹ ati atilẹyin agbegbe tun wa fun awọn ede siseto miiran.

O dara, jẹ ki a wo awọn aṣẹ ipilẹ ti o le wulo.

Nitorinaa, lati mu MongoDB ṣiṣẹ ni Docker, a kọ:

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

Bayi ni o ṣẹlẹ ifilọlẹ onibara MongoDB:

Ṣii webinar "Awọn ipilẹ MongoDB"

Bayi jẹ ki a kọ ibile Kaabo World:

print (“Hello world!”)

Ṣii webinar "Awọn ipilẹ MongoDB"

Lẹhinna - jẹ ki ká bẹrẹ awọn ọmọ:

Ṣii webinar "Awọn ipilẹ MongoDB"

Bi o ti ṣe akiyesi, ṣaaju ki o to wa JS deede, ati MongoDB jẹ olutumọ JavaScript ti o ni kikun.

Nigbawo lati lo MongoDB?

Itan kan wa pe ibẹrẹ apapọ ni Silicon Valley ni eniyan ti o ṣii iwe “HTML fun Dummies” ni ọsẹ kan sẹhin. Àkópọ̀ wo ló máa yàn? Gba pe o rọrun pupọ fun u nigbati, fun awọn idi ti o han gbangba, o ni JavaScript ninu ẹrọ aṣawakiri rẹ, Node.js nṣiṣẹ lori olupin naa, ati JavaScript tun nṣiṣẹ ni ibi ipamọ data. Eyi ni aaye nọmba 1.

Ẹlẹẹkeji, nibẹ ni nla išẹ Peter Zaitsev, ọkan ninu awọn ti o dara ju database ojogbon ni Russia. Ninu rẹ, Peteru sọrọ nipa MySQL ati MongoDB, san ifojusi pataki si igba ati kini o dara julọ lati lo.

Ni ẹkẹta, Emi yoo fẹ lati fi rinlẹ pe MongoDB jẹ ẹya ti o dara scalability - ati pe eyi jẹ ọkan ninu awọn ẹya pataki ti data data. Ti o ko ba mọ tẹlẹ kini ẹru naa yoo jẹ, MongoDB jẹ pipe. Ni afikun, o ṣe atilẹyin awọn ilana ita-jade gẹgẹbi sharding и isodipupo, ati gbogbo eyi ni a ṣe ni gbangba, iyẹn ni, o rọrun pupọ lati ṣiṣẹ.

Pẹlu iyi si ọrọ-ọrọ ni MongoDB lẹhinna:

  • awọn apoti isura infomesonu jẹ awọn apoti isura infomesonu (awọn eto, awọn akojọpọ awọn tabili);
  • ni MongoDB iru nkan wa bi gbigba - eyi jẹ afọwọṣe ti tabili kan ati ṣeto awọn iwe aṣẹ ti, ni oye, yẹ ki o sopọ;
  • awọn iwe aṣẹ jẹ afiwera si okun kan.

Ṣiṣẹda aaye data ati awọn ibeere ti o rọrun

Lati ṣẹda aaye data kan, o kan nilo lati bẹrẹ lilo rẹ:

use learn

Ṣii webinar "Awọn ipilẹ MongoDB"

Bayi jẹ ki a ṣe ifibọ kekere ti iwe-ipamọ naa. Jẹ ki o jẹ, fun apẹẹrẹ, unicorn kan ti a npè ni Aurora:

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

db - ohun kan agbaye fun iraye si ibi ipamọ data, iyẹn ni, ni otitọ, “monga” funrararẹ. Lo fun sharding sh, fun ẹda- rs.

Awọn aṣẹ wo ni nkan naa ni? db:

Ṣii webinar "Awọn ipilẹ MongoDB"

Nitorinaa, jẹ ki a pada si aṣẹ wa, nitori abajade eyiti console yoo jabo pe a ti fi sii laini kan:

Ṣii webinar "Awọn ipilẹ MongoDB"

Ọrọ naa unicorns ninu egbe kan db.unicorns.insert({name: 'Aurora', gender: 'f', weight: 450}) ntọka si gbigba. Jọwọ ṣakiyesi nibi pe a ko ṣapejuwe tabi ṣẹda ikojọpọ, ṣugbọn nirọrun kọ 'unicorns', ṣe ifibọ, ati pe a ni ikojọpọ kan.

Ati pe eyi ni bii a ṣe le gba gbogbo awọn akojọpọ wa:

db.getCollectionNames()

Ati bẹbẹ lọ. Le fi omiran sii gbigba:

Ṣii webinar "Awọn ipilẹ MongoDB"

Bayi jẹ ki a beere pipe gbigba (a leti pe ninu ọran wa database ti ni alaye tẹlẹ nipa awọn unicorns meji pẹlu orukọ kanna):

db.unicorns.find()

Jọwọ ṣakiyesi, eyi ni JSON wa (orukọ kan wa, akọ-abo, iwuwo, diẹ ninu idanimọ ohun alailẹgbẹ):

Ṣii webinar "Awọn ipilẹ MongoDB"

Bayi jẹ ki a fi sii tọkọtaya diẹ sii unicorns pẹlu awọn orukọ kanna:

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

Ati jẹ ki a wo ohun ti o ṣẹlẹ:

Ṣii webinar "Awọn ipilẹ MongoDB"

Bi o ti le rii, a ni awọn aaye afikun: ile и alagidi, eyi ti Aurora ko ni.

Jẹ ki a ṣafikun awọn unicorn diẹ sii:

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

Nitorinaa, a fi sii awọn nkan mẹrin diẹ sii nipa lilo JavaScript:

Ṣii webinar "Awọn ipilẹ MongoDB"

Ninu ero rẹ, ninu awọn apoti isura infomesonu wo ni o rọrun diẹ sii lati tọju data iwe irinna: awọn apoti isura data ibatan tabi Mongo?

Idahun si jẹ kedere - ni Monga, ati awọn loke apẹẹrẹ fihan yi daradara. Kii ṣe aṣiri pe KLADR jẹ irora ni Russian Federation. Ati Monga ni ibamu daradara pẹlu awọn adirẹsi, nitori o le ṣeto ohun gbogbo bi opo, ati pe igbesi aye yoo rọrun pupọ. Ati pe o jẹ ọkan ti o dara Apo olumulo fun MongoDB.

Jẹ ki a ṣafikun awọn unicorns diẹ sii:

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

Ṣii webinar "Awọn ipilẹ MongoDB"

Bayi san ifojusi si awọn iwe aṣẹ. Bi ilu A tọju gbogbo awọn nkan. Alaye tun wa nipa ohun ti unicorn fẹràn, ati pe kii ṣe gbogbo eniyan ni alaye yii. Nitorina inu irọ kikun orun.

Nipa ọna, lati ṣafihan awọn abajade diẹ sii ni ẹwa, o le pe ọna ni ipari aṣẹ wiwa .pretty():

Ṣii webinar "Awọn ipilẹ MongoDB"

Ti o ba nilo lati gba alaye nipa awọn titun aṣiṣe, lo aṣẹ wọnyi:

db.getLastError()

Eyi le ṣee ṣe lẹhin fifi sii kọọkan, tabi o le tunto Ibakcdun Kọ. O dara lati ka nipa rẹ ninu osise iwe aṣẹ, eyiti, nipasẹ ọna, jẹ alaye pupọ ni Monga. Nipa ọna, o tun wa lori Habré ti o dara article lori ayeye yii.

Jẹ ká lọ siwaju si eka sii ibeere

Ibeere fun iye aaye gangan:

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

Nipa kikọ iru ibeere kan, a yoo gba atokọ ti gbogbo awọn unicorns akọ ninu iṣelọpọ console.

O tun le ṣe ibeere lori orisirisi awọn aaye ni ẹẹkan: nipa abo ati nipa iwuwo:

Ṣii webinar "Awọn ipilẹ MongoDB"

Loke, san ifojusi si pataki $gt yiyan, eyiti o fun ọ laaye lati ṣe ajọbi gbogbo awọn unicorns akọ ti o ni iwuwo diẹ sii ju 700.

O le ṣayẹwo Ṣe aaye naa wa rara?:

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

Tabi bẹ:

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

Ẹgbẹ ti o tẹle yoo mu awọn unicorns jade, orukọ ẹniti o bẹrẹ pẹlu awọn lẹta A tabi a:

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

Bayi jẹ ki ká ro wiwa orun. Ibeere #1: Kini aṣẹ yii yoo jade:

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

Iyẹn tọ: gbogbo eniyan ti o nifẹ apples.

Aṣẹ atẹle yoo da data Unicorn nikan ti o ni nikan apples ati watermelons:

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

Ati aṣẹ kan diẹ sii:

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

Ninu ọran tiwa, kii yoo da ohunkohun pada, nitori pe nigba ti a ba kọja opo kan, ipin akọkọ ni a fiwera pẹlu ti akọkọ, ekeji pẹlu ekeji, bbl Iyẹn ni, opo naa gbọdọ tun baamu. nipa ipo awọn iye wọnyi.

Ati pe eyi ni ohun ti o dabi wiwa nipasẹ ohun orun nipa lilo awọn "OR" onišẹ:

Ṣii webinar "Awọn ipilẹ MongoDB"

Apajlẹ he bọdego na do mí hia wa nipa lilo $all onišẹ. Ati pe nibi ọna ti ko ṣe pataki:

Ṣii webinar "Awọn ipilẹ MongoDB"

Bakannaa a le ṣewadii pẹlu iwọn titobi:

Ṣii webinar "Awọn ipilẹ MongoDB"

Ṣugbọn kini ti a ba fẹ wa akojọpọ ti iwọn rẹ tobi ju ọkan lọ? Onišẹ kan wa fun eyi $ibiti, pẹlu eyiti o le kọ awọn nkan ti o nipọn diẹ sii:

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

Nipa ọna, ti o ba fẹ ṣe adaṣe, nibẹ ni o wa faili pẹlu awọn aṣẹ.

Kọsọ Awọn ẹya ara ẹrọ

Jẹ ki a digress diẹ diẹ ki o sọ awọn ọrọ diẹ nipa awọn ẹya ti Monga:

  • ri () ati awọn iṣẹ miiran ko da data pada - wọn da ohun ti a pe ni “kọsọ” pada;
  • otitọ pe a rii data ti a tẹjade jẹ iṣẹ ti onitumọ.

Titẹ db.unicorns.ri laisi akomo, a gba itọsi naa:

Ṣii webinar "Awọn ipilẹ MongoDB"

A tesiwaju lati mu awọn ibeere ṣẹ

Oṣiṣẹ $in tun wa:

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

Ṣii webinar "Awọn ipilẹ MongoDB"

Bayi jẹ ki a sọrọ nipa imudojuiwọn. Fun apẹẹrẹ, jẹ ki a yi iwuwo Rooooodles unicorn pada:

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

Bi abajade awọn iṣe wa, iwe-ipamọ naa yoo wa ni imudojuiwọn patapata, ati pe aaye kan pato yoo wa ninu rẹ:

Ṣii webinar "Awọn ipilẹ MongoDB"

Iyẹn ni, ohun kan ti yoo wa fun nkan wa ni iwuwo 2222 ati, dajudaju, id.

O le ṣe atunṣe ipo naa nipa lilo $ ṣeto:

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

Ṣii webinar "Awọn ipilẹ MongoDB"

O tun ṣee ṣe awọn iye afikun:

Ṣii webinar "Awọn ipilẹ MongoDB"

Ati pe o wa tun igbega - apapo ti imudojuiwọn ati fi sii:

Ṣii webinar "Awọn ipilẹ MongoDB"

Eyi ni bi o ti ṣe aṣayan aaye:

Ṣii webinar "Awọn ipilẹ MongoDB"

Ṣii webinar "Awọn ipilẹ MongoDB"

O wa lati ṣafikun awọn ọrọ diẹ nipa foo и iye:

Ṣii webinar "Awọn ipilẹ MongoDB"

Awọn ẹlẹgbẹ, iyẹn ni gbogbo rẹ, ti o ba fẹ mọ awọn alaye naa, wo gbogbo fidio. Ki o si ma ṣe gbagbe lati fi rẹ comments!

orisun: www.habr.com

Fi ọrọìwòye kun