Qhib webinar "MongoDB Basics"

Cov phooj ywg, lwm chav kawm pib "Database" yuav tshwm sim tag kis, yog li peb tau tuav ib txwm qhib zaj lus qhia, cov ntaub ntawv uas koj tuaj yeem saib no. Lub sijhawm no peb tau tham txog cov ntaub ntawv nrov MongoDB: peb tau kawm qee qhov subtleties, saib lub hauv paus ntawm kev ua haujlwm, peev xwm thiab architecture. Peb kuj tau kov ntawm qee Cov Neeg Siv Khoom.

Qhib webinar "MongoDB Basics"

Lub webinar tau tuav Ivan Belt, tus thawj coj ntawm kev txhim kho server ntawm Citymobil.

MongoDB nta

MongoDB yog qhov qhib cov ntaub ntawv-oriented DBMS uas tsis xav tau cov lus piav qhia ntawm lub rooj schema. Nws raug cais raws li NoSQL thiab siv BSON (binary JSON). Scalable tawm ntawm lub thawv, sau rau hauv C ++ thiab txhawb JavaScript syntax. Tsis muaj kev txhawb nqa SQL.

MongoDB muaj cov tsav tsheb rau ntau hom lus nrov (C, C ++, C#, Go, Java, JavaScript, Perl, PHP, Python, Ruby, thiab lwm yam). Kuj tseem muaj cov tsav tsheb tsis raug cai thiab zej zog txhawb rau lwm yam lus programming.

Zoo, cia peb saib cov lus txib yooj yim uas tuaj yeem pab tau.

Yog li, txhawm rau xa MongoDB hauv Docker, peb sau:

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

Yog li nws tshwm sim neeg tso tawm MongoDB:

Qhib webinar "MongoDB Basics"

Tam sim no cia peb sau cov tsoos ib txwm Nyob zoo lub ntiaj teb:

print (β€œHello world!”)

Qhib webinar "MongoDB Basics"

Tom qab ntawd - cia peb pib lub voj voog:

Qhib webinar "MongoDB Basics"

Raws li koj pom, ua ntej peb normal JS, thiab MongoDB yog tus neeg txhais lus JavaScript puv puv.

Thaum twg siv MongoDB?

Muaj ib zaj dab neeg hais tias qhov nruab nrab pib hauv Silicon Valley yog tus neeg uas qhib phau ntawv "HTML rau Dummies" ib lub lim tiam dhau los. Nws yuav xaiv pawg twg? Pom zoo tias nws yooj yim heev rau nws thaum, rau qhov laj thawj pom tseeb, nws muaj JavaScript hauv nws tus browser, Node.js tab tom khiav ntawm server, thiab JavaScript kuj tseem khiav hauv database. Qhov no yog point number 1.

Qhov thib ob, muaj kev ua tau zoo heev Peter Zaitsev, ib tus kws tshaj lij database zoo tshaj plaws hauv tebchaws Russia. Hauv nws, Peter tham txog MySQL thiab MongoDB, ua tib zoo saib xyuas thaum twg thiab qhov twg yog qhov zoo tshaj plaws los siv.

Thib peb, kuv xav hais tias MongoDB yog tus yam ntxwv zoo scalability - thiab qhov no yog ib qho ntawm cov yam ntxwv tseem ceeb ntawm cov ntaub ntawv. Yog tias koj tsis paub ua ntej qhov kev thauj khoom yuav zoo li cas, MongoDB zoo tag nrho. Tsis tas li ntawd, nws txhawb cov qauv tawm ntawm lub thawv xws li kev sib faib ΠΈ rov ua dua, thiab tag nrho cov no tau ua tiav pob tshab, uas yog, nws yooj yim heev rau kev ua haujlwm.

Nrog rau cov ntsiab lus hauv MongoDB ces:

  • databases yog databases (schemes, collections of tables);
  • hauv MongoDB muaj ib yam li ntawd sau - qhov no yog ib qho analogue ntawm lub rooj thiab cov ntaub ntawv uas, logically, yuav tsum tau txuas nrog;
  • cov ntaub ntawv zoo sib xws rau ib txoj hlua.

Database creation thiab cov lus nug yooj yim

Txhawm rau tsim cov ntaub ntawv, koj tsuas yog yuav tsum pib siv nws:

use learn

Qhib webinar "MongoDB Basics"

Tam sim no cia peb ua ib qho me me ntawm cov ntaub ntawv. Cia nws ua, piv txwv li, ib lub npe hu ua Aurora:

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

db - lub ntiaj teb cov khoom rau kev nkag mus rau hauv cov ntaub ntawv, uas yog, qhov tseeb, "monga" nws tus kheej. Siv rau sharding sh, rau replication - rs.

Yam khoom muaj lus txib dab tsi? db:

Qhib webinar "MongoDB Basics"

Yog li, cia peb rov qab mus rau peb cov lus txib, raws li qhov tshwm sim ntawm lub console yuav qhia tias ib kab tau muab tso rau:

Qhib webinar "MongoDB Basics"

lo lus unicorns hauv ib pab neeg db.unicorns.insert({name: 'Aurora', gender: 'f', weight: 450}) txhais tau tias ib qho kev sau. Thov nco ntsoov ntawm no tias peb tsis tau piav qhia lossis tsim cov khoom sau, tab sis tsuas yog sau 'unicorns', ua ib qho ntxig, thiab peb muaj ib phau.

Thiab qhov no yog qhov peb ua tau tau tag nrho peb cov collections:

db.getCollectionNames()

Thiab li ntawd. Ua tau ntxig rau lwm tus sau:

Qhib webinar "MongoDB Basics"

Tam sim no cia peb nug sau tiav (peb nco ntsoov koj tias nyob rau hauv peb cov ntaub ntawv database twb muaj cov ntaub ntawv hais txog ob unicorns nrog tib lub npe):

db.unicorns.find()

Thov nco ntsoov, ntawm no yog peb JSON (muaj lub npe, poj niam los txiv neej, qhov hnyav, qee qhov cim khoom tshwj xeeb):

Qhib webinar "MongoDB Basics"

Tam sim no cia peb ntxig ob peb lub unicorns nrog tib lub npe:

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

Thiab cia saib dab tsi tshwm sim:

Qhib webinar "MongoDB Basics"

Raws li koj tuaj yeem pom, peb muaj cov teb ntxiv: tsev ΠΈ cab, uas Aurora tsis muaj.

Cia peb ntxiv ob peb unicorns ntxiv:

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

Yog li, peb tau ntxig plaub yam khoom ntxiv siv JavaScript:

Qhib webinar "MongoDB Basics"

Hauv koj lub tswv yim, nyob rau hauv cov ntaub ntawv twg nws yooj yim dua los khaws cov ntaub ntawv hla tebchaws: cov ntaub ntawv sib txheeb lossis Mongo?

Cov lus teb yog pom tseeb - hauv Monga, thiab cov piv txwv saum toj no qhia qhov zoo. Nws tsis pub leejtwg paub tias KLADR yog qhov mob hauv Lavxias Federation. Thiab Monga haum zoo heev nrog cov chaw nyob, vim tias koj tuaj yeem teeb txhua yam ua ib qho array, thiab lub neej yuav yooj yim dua. Thiab nws yog ib qho zoo Tus neeg siv Case rau MongoDB.

Cia peb ntxiv 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});

Qhib webinar "MongoDB Basics"

Tam sim no xyuam xim rau cov ntaub ntawv. Raws li ua dob Peb khaws tag nrho cov khoom. Kuj tseem muaj cov ntaub ntawv hais txog dab tsi tus unicorn nyiam, thiab tsis yog txhua tus muaj cov ntaub ntawv no. Yog li sab hauv dag puv array.

Los ntawm txoj kev, kom pom cov txiaj ntsig zoo nkauj dua, koj tuaj yeem hu rau txoj hauv kev kawg ntawm kev tshawb nrhiav cov lus txib .pretty():

Qhib webinar "MongoDB Basics"

Yog koj xav tau cov ntaub ntawv hais txog qhov yuam kev tshiab kawg, siv cov lus txib hauv qab no:

db.getLastError()

Qhov no tuaj yeem ua tiav tom qab txhua qhov ntxig, lossis koj tuaj yeem teeb tsa Sau Kev txhawj xeeb. Nws yog qhov zoo dua los nyeem txog nws hauv cov ntaub ntawv raug cai, uas, los ntawm txoj kev, yog heev qhia nyob rau hauv Monga. Los ntawm txoj kev, nws tseem muaj nyob rau ntawm Habre tsab xov xwm zoo nyob rau lub sijhawm no.

Cia peb txav mus rau ntau cov lus nug nyuaj

Lus nug kom muaj nuj nqis teb:

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

Los ntawm kev sau cov lus thov no, peb yuav tau txais ib daim ntawv teev npe ntawm txhua tus txiv neej unicorns hauv console tso zis.

Koj tuaj yeem ua tau nug ntawm ntau qhov chaw ib zaug: los ntawm poj niam txiv neej thiab los ntawm qhov hnyav:

Qhib webinar "MongoDB Basics"

Saum toj no, xyuam xim rau qhov tshwj xeeb $gt xaiv, uas tso cai rau koj los yug tag nrho cov txiv neej unicorns hnyav tshaj 700.

Koj tuaj yeem tshawb xyuas puas muaj daim teb?:

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

Los yog li ntawd:

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

Pab neeg tom ntej yuav coj tawm cov unicorns, nws cov npe pib nrog cov tsiaj ntawv A lossis a:

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

Tam sim no cia peb xav txog array nrhiav. Nqe Lus Nug # 1: Cov lus txib no yuav ua li cas:

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

Yog lawm: txhua tus uas nyiam txiv apples.

Cov lus txib hauv qab no yuav rov qab tsuas yog cov ntaub ntawv unicorn uas muaj Tsuas yog apples thiab watermelons:

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

Thiab ib qho ntxiv:

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

Hauv peb cov ntaub ntawv, nws yuav tsis rov qab dab tsi, txij li thaum peb dhau ib qho array, thawj lub ntsiab lus piv nrog rau thawj, qhov thib ob nrog qhov thib ob, thiab lwm yam. Qhov ntawd yog, array yuav tsum sib phim. los ntawm txoj hauj lwm cov nqi no.

Thiab qhov no yog qhov nws zoo li nrhiav los ntawm ib qho array siv tus neeg teb xov tooj "OR".:

Qhib webinar "MongoDB Basics"

Cov qauv hauv qab no yuav qhia peb nrhiav siv $txhua tus neeg teb xov tooj. Thiab ntawm no cov kab ke tsis tseem ceeb:

Qhib webinar "MongoDB Basics"

Tsis tas li peb ua tau Nrhiav los ntawm array loj:

Qhib webinar "MongoDB Basics"

Tab sis ua li cas yog tias peb xav nrhiav ib qho array uas nws loj dua ib? Muaj tus neeg ua haujlwm rau qhov no $ qhov twg, uas koj tuaj yeem sau ntau yam nyuaj:

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

Los ntawm txoj kev, yog tias koj xav xyaum, tam koj cov ntaub ntawv nrog cov lus txib.

Tus cursor nta

Cia peb digress me ntsis thiab hais ob peb lo lus hais txog cov yam ntxwv ntawm Monga:

  • nrhiav() thiab lwm yam kev ua haujlwm tsis rov qab cov ntaub ntawv - lawv rov qab hu ua "cursor";
  • qhov tseeb tias peb pom cov ntaub ntawv raug luam tawm yog ua haujlwm ntawm tus neeg txhais lus.

Kev ntaus ntawv db.unicorns.nr yam tsis muaj kab lus, peb tau txais cov lus qhia:

Qhib webinar "MongoDB Basics"

Peb txuas ntxiv ua kom tiav cov lus thov

Kuj tseem muaj $ hauv tus neeg teb xov tooj:

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

Qhib webinar "MongoDB Basics"

Tam sim no cia peb tham txog kev hloov tshiab. Piv txwv li, cia peb hloov qhov hnyav ntawm Rooooodles unicorn:

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

Raws li qhov tshwm sim ntawm peb qhov kev ua, cov ntaub ntawv yuav muab kho dua tshiab, thiab tsuas yog ib qho kev qhia tshwj xeeb yuav nyob hauv nws:

Qhib webinar "MongoDB Basics"

Ntawd yog, tib yam uas yuav nyob twj ywm rau peb cov khoom yog qhov hnyav 2222 thiab, tau kawg, id.

Koj tuaj yeem kho qhov xwm txheej siv $set:

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

Qhib webinar "MongoDB Basics"

Nws kuj ua tau nce nqi:

Qhib webinar "MongoDB Basics"

Thiab tseem muaj nce siab - kev sib xyaw ua ke ntawm kev hloov tshiab thiab ntxig:

Qhib webinar "MongoDB Basics"

Nov yog yuav ua li cas nws ua tiav kev xaiv teb:

Qhib webinar "MongoDB Basics"

Qhib webinar "MongoDB Basics"

Nws tseem yuav ntxiv ob peb lo lus hais txog Hla ΠΈ txwv:

Qhib webinar "MongoDB Basics"

Cov npoj yaig, yog txhua yam, yog tias koj xav paub cov ntsiab lus, saib tag nrho cov video. Thiab tsis txhob hnov ​​​​qab tawm koj cov lus!

Tau qhov twg los: www.hab.com

Ntxiv ib saib