Tsegulani webinar "MongoDB Basics"

Anzanga, kuyambitsa maphunziro ena "Database" zichitika mawa, kotero tidakhala ndi phunziro lotseguka lamwambo, kujambula komwe mungawone apa. Nthawi ino tidalankhula za nkhokwe yotchuka ya MongoDB: tidaphunzira zina mwanzeru, tidayang'ana zoyambira zogwirira ntchito, kuthekera ndi kamangidwe. Tidakhudzanso Nkhani Zina Zogwiritsa Ntchito.

Tsegulani webinar "MongoDB Basics"

Webinar idachitika Ivan Belt, mutu wa chitukuko cha seva ku Citymobil.

Zosintha za MongoDB

MongoDB ndi DBMS yotsegulira zolemba zotseguka zomwe sizifuna kufotokozera schema ya tebulo. Imatchedwa NoSQL ndipo imagwiritsa ntchito BSON (binary JSON). Zowoneka bwino m'bokosi, zolembedwa mu C++ ndipo zimathandizira ma syntax a JavaScript. Palibe chithandizo cha SQL.

MongoDB ili ndi madalaivala azilankhulo zambiri zodziwika bwino (C, C++, C#, Go, Java, JavaScript, Perl, PHP, Python, Ruby, etc.). Palinso madalaivala osavomerezeka komanso othandizira anthu ammudzi a zilankhulo zina zamapulogalamu.

Chabwino, tiyeni tione malamulo oyambirira omwe angakhale othandiza.

Chifukwa chake, kutumiza MongoDB ku Docker, timalemba:

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

Choncho zimachitika kukhazikitsidwa kwa kasitomala MongoDB:

Tsegulani webinar "MongoDB Basics"

Tsopano tiyeni tilembe yachikhalidwe Moni Dziko Lapansi:

print (β€œHello world!”)

Tsegulani webinar "MongoDB Basics"

Pambuyo pake - tiyeni tiyambe kuzungulira:

Tsegulani webinar "MongoDB Basics"

Monga munazindikira, pamaso pathu wokhazikika JS, ndipo MongoDB ndi womasulira wa JavaScript wathunthu.

Nthawi yogwiritsira ntchito MongoDB?

Pali nkhani yomwe oyambitsa wamba ku Silicon Valley ndi munthu yemwe adatsegula buku la "HTML for Dummies" sabata yapitayo. Kodi adzasankha mulu uti? Gwirizanani kuti ndizosavuta kwa iye pamene, pazifukwa zomveka, ali ndi JavaScript mu msakatuli wake, Node.js ikuyenda pa seva, ndipo JavaScript ikugwiranso ntchito mu database. Iyi ndi point number 1.

Kachiwiri, pali ntchito yabwino Peter Zaitsev, m'modzi mwa akatswiri abwino kwambiri a database ku Russia. Mmenemo, Peter akukamba za MySQL ndi MongoDB, kumvetsera mwapadera nthawi ndi zomwe zili bwino kugwiritsa ntchito.

Chachitatu, ndikufuna kutsindika kuti MongoDB imadziwika ndi zabwino scalability - ndipo ichi ndi chimodzi mwazinthu zazikulu za database. Ngati simukudziwa pasadakhale zomwe katunduyo adzakhale, MongoDB ndiyabwino. Kuwonjezera apo, imathandizira kunja kwa bokosi machitidwe monga kugawa ΠΈ kubwerezabwereza, ndipo zonsezi zimachitika moonekeratu, ndiye kuti, ndizosavuta kugwira ntchito.

chokhudza terminology mu MongoDB ndiye:

  • nkhokwe ndi nkhokwe (ndondomeko, zosonkhanitsira matebulo);
  • mu MongoDB pali chinthu monga chopereka - ichi ndi analogue ya tebulo ndi zolemba zomwe, momveka, ziyenera kulumikizidwa;
  • zolemba zimafanana ndi chingwe.

Kupanga database ndi mafunso osavuta

Kuti mupange database, muyenera kungoyamba kuigwiritsa ntchito:

use learn

Tsegulani webinar "MongoDB Basics"

Tsopano tiyeni tipange kaphatikizidwe kakang'ono ka chikalatacho. Zikhale, mwachitsanzo, unicorn wotchedwa Aurora:

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

db - chinthu chapadziko lonse lapansi chofikira ku database, ndiko kuti, "monga" palokha. Amagwiritsidwa ntchito kugawa sh, kubwereza - rs.

Kodi chinthucho chili ndi malamulo otani? db:

Tsegulani webinar "MongoDB Basics"

Chifukwa chake, tiyeni tibwerere ku lamulo lathu, chifukwa chomwe console idzanena kuti mzere umodzi wayikidwa:

Tsegulani webinar "MongoDB Basics"

Mawu unicorns mu timu db.unicorns.insert({name: 'Aurora', gender: 'f', weight: 450}) amatanthauza kusonkhanitsa. Chonde dziwani apa kuti sitinafotokoze kapena kupanga zosonkhanitsira, koma tidangolemba 'unicorns', tidayikapo, ndipo tinali ndi zosonkhanitsa.

Ndipo umu ndi momwe tingachitire pezani zosonkhetsa zathu zonse:

db.getCollectionNames()

Ndi zina zotero. Mutha lowetsani wina zosonkhanitsa:

Tsegulani webinar "MongoDB Basics"

Tsopano tiyeni tifunse kusonkhanitsa kwathunthu (tikukumbutsani kuti kwathu nkhokwe ili kale ndi chidziwitso cha ma unicorn awiri omwe ali ndi dzina lomwelo):

db.unicorns.find()

Chonde dziwani, nayi JSON wathu (pali dzina, jenda, kulemera, chozindikiritsa chapadera cha chinthu):

Tsegulani webinar "MongoDB Basics"

Tsopano tiyeni tiyike ma unicorn angapo okhala ndi mayina omwewo:

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

Ndipo tiwone zomwe zidachitika:

Tsegulani webinar "MongoDB Basics"

Monga mukuwonera, tili ndi magawo ena: kunyumba ΠΈ nyongolotsi, yomwe Aurora alibe.

Tiyeni tiwonjezere ma unicorns angapo:

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

Chifukwa chake, tidayika zinthu zina zinayi pogwiritsa ntchito JavaScript:

Tsegulani webinar "MongoDB Basics"

M'malingaliro anu, ndi malo ati omwe ndi osavuta kusunga zidziwitso za pasipoti: nkhokwe zaubale kapena Mongo?

Yankho ndi lodziwikiratu - mu Monga, ndipo chitsanzo pamwambapa chikuwonetsa izi bwino. Si chinsinsi kuti KLADR ndi ululu mu Russian Federation. Ndipo Monga amagwirizana kwambiri ndi maadiresi, chifukwa mukhoza kuyika chirichonse monga gulu, ndipo moyo udzakhala wosavuta kwambiri. Ndipo ndi yabwino Mlandu Wogwiritsa wa MongoDB.

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

Tsegulani webinar "MongoDB Basics"

Tsopano tcherani khutu ku zolembazo. Monga zaka Timasunga zinthu zonse. Palinso zambiri zomwe unicorn amakonda, ndipo si aliyense amene ali ndi chidziwitso ichi. Choncho mkati bodza zonse.

Mwa njira, kuti muwonetse zotsatira mokongola kwambiri, mukhoza kutchula njira kumapeto kwa lamulo lofufuzira .pretty():

Tsegulani webinar "MongoDB Basics"

Ngati muyenera kupeza zambiri za cholakwika chaposachedwa, gwiritsani ntchito lamulo ili:

db.getLastError()

Izi zitha kuchitika mukayika chilichonse, kapena mutha kukonza Zokhudza Kulemba. Ndi bwino kuwerenga za izo mu zolemba zovomerezeka, zomwe, mwa njira, ndizodziwitsa kwambiri ku Monga. Mwa njira, imapezekanso pa HabrΓ© nkhani yabwino pa nthawiyi.

Tiyeni tipitirire ku mafunso ovuta kwambiri

Funso la mtengo wake weniweni:

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

Polemba pempho lotero, tidzalandira mndandanda wa ma unicorn onse achimuna pazotulutsa zotulutsa.

Mukhozanso kutero funsani m'magawo angapo nthawi imodzi: mwa jenda komanso kulemera kwake:

Tsegulani webinar "MongoDB Basics"

Pamwambapa, tcherani khutu ku zapadera $gt chosankha, zomwe zimakulolani kuswana ma unicorn onse aamuna olemera kuposa 700.

Mukhoza kufufuza kodi munda ulipo?:

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

Kapena kotero:

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

Timu yotsatira itulutsa unicorns, omwe maina awo amayamba ndi zilembo A kapena A:

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

Tsopano tiyeni tikambirane kufufuza zambiri. Funso #1: Kodi lamulo ili litulutsa chiyani:

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

Ndiko kulondola: aliyense amene amakonda maapulo.

Lamulo lotsatirali lingobwezera zomwe zili ndi unicorn maapulo ndi mavwende okha:

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

Ndipo lamulo linanso:

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

Kwa ife, sichingabweze chilichonse, chifukwa tikadutsa mndandanda, chinthu choyamba chikufanizidwa ndi choyamba, chachiwiri ndi chachiwiri, ndi zina zotero. ndi udindo mfundo izi.

Ndipo izi ndi momwe zimawonekera Kufufuza m'magulu osiyanasiyana pogwiritsa ntchito "OR".:

Tsegulani webinar "MongoDB Basics"

Chitsanzo chotsatirachi chikutisonyeza fufuzani pogwiritsa ntchito $all operator. Ndipo apa kutsatizana sikuli kofunikira:

Tsegulani webinar "MongoDB Basics"

Ifenso tikhoza Sakani ndi kukula:

Tsegulani webinar "MongoDB Basics"

Koma bwanji ngati tikufuna kupeza gulu lomwe kukula kwake kuli kokulirapo kuposa limodzi? Pali woperekera izi $ku, zomwe mungathe kulemba zinthu zovuta kwambiri:

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

Mwa njira, ngati mukufuna kuchita, ndi inu apo file ndi malamulo.

Mawonekedwe a Cholozera

Tiyeni tidutse pang'ono ndikunena mawu ochepa za mawonekedwe a Monga:

  • find() ndi ntchito zina sizibweza deta - zimabwezera zomwe zimatchedwa "cursor";
  • mfundo yakuti tikuwona deta ikusindikizidwa ndi ntchito ya womasulira.

Kulemba db.unicorns.pezani popanda mabatani, timapeza chidziwitso:

Tsegulani webinar "MongoDB Basics"

Tikupitiriza kukwaniritsa zopempha

Palinso wogwiritsa ntchito $in:

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

Tsegulani webinar "MongoDB Basics"

Tsopano tiyeni tikambirane za update. Mwachitsanzo, tiyeni tisinthe kulemera kwa Rooooodles unicorn:

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

Chifukwa cha zochita zathu, chikalatacho zidzasinthidwa kwathunthu, ndipo gawo limodzi lokha lodziwika lidzatsala mmenemo:

Tsegulani webinar "MongoDB Basics"

Ndiko kuti, chinthu chokhacho chomwe chidzatsalira kwa chinthu chathu ndi kulemera kwa 2222 ndipo, ndithudi, id.

Mutha kukonza vutoli pogwiritsa ntchito $ set:

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

Tsegulani webinar "MongoDB Basics"

N’zothekanso mayendedwe owonjezera:

Tsegulani webinar "MongoDB Basics"

Ndipo palinso kukhumudwitsa - kuphatikiza kosintha ndi kuyika:

Tsegulani webinar "MongoDB Basics"

Umu ndi momwe zimachitikira kusankha munda:

Tsegulani webinar "MongoDB Basics"

Tsegulani webinar "MongoDB Basics"

Zimatsalira kuwonjezera mawu ochepa za tsika ΠΈ malire:

Tsegulani webinar "MongoDB Basics"

Anzathu, ndizo zonse, ngati mukufuna kudziwa zambiri, onerani kanema yonse. Ndipo musaiwale kusiya ndemanga zanu!

Source: www.habr.com

Kuwonjezera ndemanga