"MongoDB Basics" webinar විවෘත කරන්න

මිත්රවරුනි, තවත් පාඨමාලාවක් දියත් කිරීම "දත්ත සමුදාය" හෙට සිදුවනු ඇත, එබැවින් අපි සාම්ප්‍රදායික විවෘත පාඩමක් පැවැත්වුවෙමු, එහි පටිගත කිරීම ඔබට නැරඹිය හැකිය මෙහි. මෙවර අපි ජනප්‍රිය MongoDB දත්ත සමුදාය ගැන කතා කළෙමු: අපි සියුම් කරුණු කිහිපයක් අධ්‍යයනය කර, ක්‍රියාකාරිත්වයේ මූලික කරුණු, හැකියාවන් සහ ගෘහ නිර්මාණ ශිල්පය දෙස බැලුවෙමු. අපි සමහර User Cases ගැනත් ස්පර්ශ කළා.

"MongoDB Basics" webinar විවෘත කරන්න

webinar පැවැත්විණි අයිවන් බෙල්ට්, Citymobil හි සේවාදායක සංවර්ධන ප්රධානියා.

MongoDB විශේෂාංග

MongoDB වගු ක්‍රමයේ විස්තරයක් අවශ්‍ය නොවන විවෘත මූලාශ්‍ර ලේඛන-නැඹුරු DBMS වේ. එය NoSQL ලෙස වර්ගීකරණය කර ඇති අතර BSON (ද්විමය JSON) භාවිතා කරයි. C++ වලින් ලියා ඇති කොටුවෙන් පිටත පරිමාණය කළ හැකි අතර JavaScript සින්ටැක්ස් සඳහා සහය දක්වයි. SQL ආධාරකයක් නොමැත.

MongoDB සතුව බොහෝ ජනප්‍රිය ක්‍රමලේඛන භාෂා (C, C++, C#, Go, Java, JavaScript, Perl, PHP, Python, Ruby, ආදිය) සඳහා ධාවක ඇත. වෙනත් ක්‍රමලේඛන භාෂා සඳහා නිල නොවන සහ ප්‍රජා සහාය දක්වන ධාවක ද ඇත.

හොඳයි, ප්‍රයෝජනවත් විය හැකි මූලික විධාන දෙස බලමු.

ඉතින්, ඩොකර් තුළ MongoDB යෙදවීමට, අපි ලියනවා:

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

මේ අනුව එය සිදු වේ සේවාදායකයා දියත් කිරීම මොන්ගෝ ඩීබී:

"MongoDB Basics" webinar විවෘත කරන්න

දැන් අපි සම්ප්‍රදායික එක ලියමු හෙලෝ වර්ල්ඩ්:

print (“Hello world!”)

"MongoDB Basics" webinar විවෘත කරන්න

එයට පසු - අපි චක්රය ආරම්භ කරමු:

"MongoDB Basics" webinar විවෘත කරන්න

ඔබ දුටු පරිදි, අපට පෙර සාමාන්‍ය JS, සහ MongoDB යනු සම්පූර්ණ JavaScript පරිවර්තකයකි.

MongoDB භාවිතා කළ යුත්තේ කවදාද?

සිලිකන් නිම්නයේ සාමාන්‍ය ආරම්භකයකු සතියකට පෙර “HTML for Dummies” පොත විවෘත කළ පුද්ගලයා යැයි කතාවක් තිබේ. ඔහු තෝරා ගන්නේ කුමන තොගයද? පැහැදිලි හේතූන් මත, ඔහුගේ බ්‍රවුසරයේ ජාවාස්ක්‍රිප්ට් ඇති විට, Node.js සේවාදායකයේ ක්‍රියාත්මක වන විට සහ ජාවාස්ක්‍රිප්ට් දත්ත ගබඩාවේ ද ක්‍රියාත්මක වන විට එය ඔහුට ඉතා පහසු බව එකඟ වන්න. මෙය ලක්ෂ්ය අංක 1 වේ.

දෙවනුව, පවතී විශිෂ්ට කාර්ය සාධනය පීටර් සයිට්සෙව්, රුසියාවේ හොඳම දත්ත සමුදා විශේෂඥයන්ගෙන් එකකි. එහි දී, පීටර් MySQL සහ MongoDB ගැන කතා කරයි, භාවිතා කිරීමට හොඳම දේ කවදාද සහ කුමක්ද යන්න පිළිබඳව විශේෂ අවධානයක් යොමු කරයි.

තෙවනුව, මම MongoDB හොඳ ලක්ෂණ වලින් සංලක්ෂිත බව අවධාරණය කිරීමට කැමැත්තෙමි පරිමාණය - සහ මෙය දත්ත සමුදායේ ප්රධාන ලක්ෂණ වලින් එකකි. load එක මොකක්ද කියලා කලින්ම දන්නේ නැත්නම් MongoDB නියමයි. ඊට අමතරව, එය වැනි පෙට්ටියෙන් පිටත රටා සඳහා සහය දක්වයි බෙදීම и අනුකරණය, සහ මේ සියල්ල තරමක් විනිවිද පෙනෙන ලෙස සිදු කරනු ලැබේ, එනම්, එය වැඩ කිරීමට ඉතා පහසු වේ.

සම්බන්ධයෙන් පාරිභාෂිතය MongoDB හි එවිට:

  • දත්ත සමුදායන් යනු දත්ත සමුදායන් (යෝජනා ක්රම, වගු එකතු කිරීම්);
  • MongoDB වල එහෙම එකක් තියෙනවා එකතුව - මෙය වගුවක ප්‍රතිසමයක් සහ තර්කානුකූලව සම්බන්ධ කළ යුතු ලේඛන සමූහයකි;
  • ලේඛන තන්තුවකට සමාන වේ.

දත්ත සමුදාය නිර්මාණය සහ සරල විමසුම්

දත්ත සමුදායක් නිර්මාණය කිරීම සඳහා, ඔබ එය භාවිතා කිරීම ආරම්භ කළ යුතුය:

use learn

"MongoDB Basics" webinar විවෘත කරන්න

දැන් අපි ලේඛනයේ කුඩා ඇතුල් කිරීමක් කරමු. උදාහරණයක් ලෙස, අරෝරා නම් යුනිකෝන් එකක් වේවා:

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

db - දත්ත සමුදායට ප්‍රවේශ වීම සඳහා ගෝලීය වස්තුවක්, එනම් ඇත්ත වශයෙන්ම “මොංගා” ය. බෙදා හැරීම සඳහා භාවිතා වේ sh, අනුකරණය සඳහා - rs.

වස්තුවට ඇති විධාන මොනවාද? db:

"MongoDB Basics" webinar විවෘත කරන්න

එබැවින්, අපගේ විධානය වෙත ආපසු යමු, එහි ප්‍රතිඵලයක් ලෙස කොන්සෝලය එක් පේළියක් ඇතුළත් කර ඇති බව වාර්තා කරයි:

"MongoDB Basics" webinar විවෘත කරන්න

වචනය unicorns කණ්ඩායමක db.unicorns.insert({name: 'Aurora', gender: 'f', weight: 450}) එකතුවක් දක්වයි. අපි එකතුව විස්තර කර හෝ නිර්මාණය නොකළ නමුත් සරලව ‘යුනිකෝන්’ ලියා, ඇතුළු කිරීමක් කළ අතර අපට එකතුවක් තිබූ බව කරුණාවෙන් සලකන්න.

ඒ වගේම අපිට පුළුවන් මෙහෙමයි අපගේ සියලුම එකතු කිරීම් ලබා ගන්න:

db.getCollectionNames()

සහ යනාදි. පුළුවන් තවත් එකක් ඇතුල් කරන්න එකතු:

"MongoDB Basics" webinar විවෘත කරන්න

දැන් අපි විමසමු සම්පූර්ණ එකතුව (අපගේ නඩුවේ දත්ත සමුදායේ එකම නම සහිත යුනිකෝන් දෙකක් පිළිබඳ තොරතුරු දැනටමත් අඩංගු බව අපි ඔබට මතක් කරමු):

db.unicorns.find()

කරුණාකර සටහන් කර ගන්න, මෙන්න අපේ JSON (නමක්, ස්ත්‍රී පුරුෂ භාවය, බර, යම් සුවිශේෂී වස්තු හඳුනාගැනීමක් ඇත):

"MongoDB Basics" webinar විවෘත කරන්න

දැන් අපි එකම නම් සහිත තවත් යුනිකෝන් කිහිපයක් ඇතුළත් කරමු:

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

සහ අපි බලමු මොකද උනේ කියලා:

"MongoDB Basics" webinar විවෘත කරන්න

ඔබට පෙනෙන පරිදි, අපට අමතර ක්ෂේත්ර තිබේ: ගෙදර и පණුවා, Aurora සතුව නැති.

අපි තවත් යුනිකෝන් කිහිපයක් එකතු කරමු:

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

එබැවින්, අපි JavaScript භාවිතයෙන් තවත් වස්තු හතරක් ඇතුළත් කළෙමු:

"MongoDB Basics" webinar විවෘත කරන්න

ඔබගේ මතය අනුව, විදේශ ගමන් බලපත්‍ර දත්ත ගබඩා කිරීම වඩාත් පහසු වන්නේ කුමන දත්ත සමුදායන්හිද: සම්බන්ධතා දත්ත සමුදායන් හෝ මොංගෝ?

පිළිතුර පැහැදිලිය - මොන්ගා හි, ඉහත උදාහරණය මෙය හොඳින් පෙන්නුම් කරයි. KLADR රුසියානු සමූහාණ්ඩුවේ වේදනාවක් බව රහසක් නොවේ. තවද Monga ලිපින සමඟ ඉතා හොඳින් ගැලපේ, මන්ද ඔබට සෑම දෙයක්ම අරාවක් ලෙස සැකසිය හැකි අතර ජීවිතය වඩාත් පහසු වනු ඇත. ඒ වගේම ඒක හොඳ එකක් MongoDB සඳහා පරිශීලක නඩුව.

අපි තවත් යුනිකෝන් එකතු කරමු:

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

"MongoDB Basics" webinar විවෘත කරන්න

දැන් ලේඛන වෙත අවධානය යොමු කරන්න. පරිදි වයස අපි සම්පූර්ණ වස්තූන් ගබඩා කරමු. යුනිකෝන් ආදරය කරන දේ පිළිබඳ තොරතුරු ද ඇත, සෑම කෙනෙකුටම මෙම තොරතුරු නොමැත. ඉතින් ඇතුලේ බොරු සම්පූර්ණ අරාව.

මාර්ගය වන විට, ප්රතිඵල වඩාත් අලංකාර ලෙස ප්රදර්ශනය කිරීම සඳහා, ඔබට සෙවුම් විධානය අවසානයේ ක්රමය අමතන්න .pretty():

"MongoDB Basics" webinar විවෘත කරන්න

ඔබට ලබා ගැනීමට අවශ්ය නම් නවතම දෝෂය පිළිබඳ තොරතුරු, පහත විධානය භාවිතා කරන්න:

db.getLastError()

මෙය එක් එක් ඇතුළත් කිරීමෙන් පසුව සිදු කළ හැක, නැතහොත් ඔබට Write Concern වින්‍යාසගත කළ හැක. ඒ ගැන කියවීම වඩා හොඳය නිල ලියකියවිලි, මාර්ගය වන විට, Monga හි ඉතා තොරතුරු සපයයි. මාර්ගය වන විට, එය Habré මත ද තිබේ හොඳ ලිපියක් මේ ගැන.

අපි වඩාත් සංකීර්ණ විමසුම් වෙත යමු

නිශ්චිත ක්ෂේත්‍ර අගය සඳහා විමසුම:

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

එවැනි ඉල්ලීමක් ලිවීමෙන්, කොන්සෝල ප්‍රතිදානයේ ඇති සියලුම පිරිමි යුනිකෝන් ලැයිස්තුවක් අපට ලැබෙනු ඇත.

ඔබටත් කරන්න පුළුවන් එකවර ක්ෂේත්‍ර කිහිපයකින් විමසන්න: ස්ත්‍රී පුරුෂ භාවය සහ බර අනුව:

"MongoDB Basics" webinar විවෘත කරන්න

ඉහත, විශේෂ අවධානය යොමු කරන්න $gt තේරීම්කාරකය700 ට වඩා බරැති සියලුම පිරිමි යුනිකෝන් බෝ කිරීමට ඔබට ඉඩ සලසයි.

ඔබට පරීක්ෂා කළ හැකිය ක්ෂේත්‍රය කිසිසේත්ම පවතින්නේද?:

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

එසේ නැතහොත් එසේ

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

ඊළඟ කණ්ඩායම යුනිකෝන් පිටතට ගෙන එනු ඇත, ඔවුන්ගේ නම් A හෝ a අක්ෂර වලින් ආරම්භ වේ:

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

දැන් අපි සලකා බලමු array search. ප්‍රශ්නය #1: මෙම විධානය ප්‍රතිදානය කරන්නේ කුමක්ද:

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

ඒක හරි: ඇපල් වලට ආදරය කරන හැමෝම.

පහත විධානය මඟින් යුනිකෝන් දත්ත පමණක් ලබා දෙනු ඇත ඇපල් සහ කොමඩු පමණි:

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

සහ තවත් එක් විධානයක්:

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

අපගේ නඩුවේදී, එය කිසිවක් ආපසු ලබා නොදෙනු ඇත, මන්ද අප අරාවක් පසු කරන විට, පළමු මූලද්‍රව්‍යය පළමු සමඟ, දෙවැන්න දෙවැන්න සමඟ සංසන්දනය කරයි. එනම්, අරාව ද ගැලපිය යුතුය. තනතුර අනුව මෙම අගයන්.

ඒවගේම මේකයි පේන්නෙ "OR" ක්‍රියාකරු භාවිතයෙන් අරාවක් හරහා සෙවීම:

"MongoDB Basics" webinar විවෘත කරන්න

පහත උදාහරණය අපට පෙන්වනු ඇත $all operator භාවිතයෙන් සොයන්න. මෙහි අනුපිළිවෙල වැදගත් නොවේ:

"MongoDB Basics" webinar විවෘත කරන්න

අපිටත් පුළුවන් අරා ප්‍රමාණය අනුව සොයන්න:

"MongoDB Basics" webinar විවෘත කරන්න

නමුත් එකකට වඩා විශාල අරාවක් සොයා ගැනීමට අපට අවශ්‍ය නම් කුමක් කළ යුතුද? මේ සඳහා ක්‍රියාකරුවෙක් සිටී $කොහේ, ඔබට වඩාත් සංකීර්ණ දේවල් ලිවිය හැකිය:

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

මාර්ගය වන විට, ඔබට පුහුණු වීමට අවශ්ය නම්, ඔබ ඉන්නවා විධාන සහිත ගොනුව.

කර්සරයේ විශේෂාංග

අපි ටිකක් අපගමනය කර මොන්ගා හි විශේෂාංග ගැන වචන කිහිපයක් කියමු:

  • find() සහ අනෙකුත් මෙහෙයුම් දත්ත ලබා නොදේ - ඔවුන් ඊනියා "කර්සරය" ලබා දෙයි;
  • දත්ත මුද්‍රණය වන බව අපට පෙනෙන්නේ පරිවර්තකයාගේ කාර්යයයි.

ටයිප් කිරීම db.unicorns.find වරහන් නොමැතිව, අපට විමසුම ලැබේ:

"MongoDB Basics" webinar විවෘත කරන්න

අපි දිගටම ඉල්ලීම් ඉටු කරනවා

$in ක්‍රියාකරු ද ඇත:

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

"MongoDB Basics" webinar විවෘත කරන්න

දැන් අපි යාවත්කාලීන කිරීම ගැන කතා කරමු. උදාහරණයක් ලෙස, Rooooodles යුනිකෝන් වල බර වෙනස් කරමු:

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

අපගේ ක්රියාවන්ගේ ප්රතිඵලයක් ලෙස, ලේඛනය සම්පූර්ණයෙන්ම යාවත්කාලීන වනු ඇත, සහ එහි එක් නිශ්චිත ක්ෂේත්‍රයක් පමණක් පවතිනු ඇත:

"MongoDB Basics" webinar විවෘත කරන්න

එනම්, අපගේ වස්තුව සඳහා ඉතිරිව ඇති එකම දෙය බර 2222 සහ, ඇත්ත වශයෙන්ම, id වේ.

භාවිතයෙන් ඔබට තත්වය නිවැරදි කළ හැකිය $set:

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

"MongoDB Basics" webinar විවෘත කරන්න

එය ද හැකි ය වර්ධක අගයන්:

"MongoDB Basics" webinar විවෘත කරන්න

ඒ වගේම තියෙනවා upsert - යාවත්කාලීන සහ ඇතුළත් කිරීමේ සංයෝජනය:

"MongoDB Basics" webinar විවෘත කරන්න

මෙන්න මෙහෙමයි ඒක කරන්නේ ක්ෂේත්ර තේරීම:

"MongoDB Basics" webinar විවෘත කරන්න

"MongoDB Basics" webinar විවෘත කරන්න

ගැන වචන කිහිපයක් එකතු කිරීමට ඉතිරිව ඇත ප්රොම්ප් и සීමාව:

"MongoDB Basics" webinar විවෘත කරන්න

සගයන්, ඔබට විස්තර දැන ගැනීමට අවශ්‍ය නම් එපමණයි, සම්පූර්ණ වීඩියෝව බලන්න. ඒ වගේම ඔයාලගේ අදහස් කියන්නත් අමතක කරන්න එපා!

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න