ዌቢናርን ክፈት "MongoDB Basics"

ጓደኞች፣ ሌላ ኮርስ መጀመር "መረጃ ቋት" ነገ ይካሄዳል፣ስለዚህ እናንተ የምትመለከቱትን ቀረጻ ባህላዊ ክፍት ትምህርት አካሂደናል። እዚህ. በዚህ ጊዜ ስለ ታዋቂው የሞንጎዲቢ ዳታቤዝ ተነጋገርን-አንዳንድ ጥቃቅን ነገሮችን አጥንተናል ፣የአሠራሩን ፣የችሎታዎችን እና የሕንፃውን መሰረታዊ ነገሮች ተመልክተናል። እንዲሁም አንዳንድ የተጠቃሚ ጉዳዮችን አንስተናል።

ዌቢናርን ክፈት "MongoDB Basics"

ዌቢናር ተካሄደ ኢቫን ቀበቶበሲቲሞቢል የአገልጋይ ልማት ኃላፊ።

MongoDB ባህሪዎች

MongODB የክፍት ምንጭ ሰነድ-ተኮር ዲቢኤምኤስ ነው የሠንጠረዥ ንድፍ መግለጫ የማይፈልግ። እሱ NoSQL ተብሎ የተከፋፈለ ሲሆን BSON (ሁለትዮሽ JSON) ይጠቀማል። ከሳጥን ውጭ ሊለካ የሚችል፣ በC++ የተጻፈ እና የጃቫስክሪፕት አገባብ ይደግፋል። ምንም የ SQL ድጋፍ የለም.

MongoDB ለብዙ ታዋቂ የፕሮግራም ቋንቋዎች (C፣ C++፣ C#፣ Go፣ Java፣ JavaScript፣ Perl፣ PHP፣ Python፣ Ruby፣ ወዘተ) ሾፌሮች አሉት። እንዲሁም ለሌሎች የፕሮግራም አወጣጥ ቋንቋዎች መደበኛ ያልሆኑ እና በማህበረሰብ የሚደገፉ አሽከርካሪዎች አሉ።

ደህና ፣ ጠቃሚ ሊሆኑ የሚችሉትን መሰረታዊ ትዕዛዞችን እንመልከት ።

ስለዚህ MongoDB በ Docker ውስጥ ለማሰማራትእኛ እንጽፋለን፡-

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"

አሁን ባህላዊውን እንፃፍ ሠላም ዓለም:

print (“Hello world!”)

ዌቢናርን ክፈት "MongoDB Basics"

ከዛ በኋላ - ዑደቱን እንጀምር:

ዌቢናርን ክፈት "MongoDB Basics"

እርስዎ እንዳስተዋሉ, ከእኛ በፊት መደበኛ JS, እና MongoDB ሙሉ የጃቫ ስክሪፕት አስተርጓሚ ነው።.

MongoDB መቼ መጠቀም ይቻላል?

በሲሊኮን ቫሊ ውስጥ ያለው አማካይ ጅምር ከሳምንት በፊት "HTML for Dummies" የሚለውን መጽሐፍ የከፈተ ሰው ነው የሚል ታሪክ አለ። የትኛውን ቁልል ይመርጣል? ግልጽ በሆኑ ምክንያቶች ጃቫ ስክሪፕት በአሳሹ ውስጥ ሲኖረው፣ Node.js በአገልጋዩ ላይ ሲሰራ እና ጃቫስክሪፕት በመረጃ ቋቱ ውስጥ ሲሰራ ለእሱ በጣም ምቹ እንደሆነ ይስማሙ። ይህ ነጥብ ቁጥር 1 ነው።

በሁለተኛ ደረጃ, አለ ታላቅ አፈጻጸም ፒተር ዛይሴቭ በሩሲያ ውስጥ ካሉ ምርጥ የውሂብ ጎታ ስፔሻሊስቶች አንዱ። በእሱ ውስጥ ፒተር ስለ MySQL እና MongoDB ይናገራል, መቼ እና መቼ መጠቀም የተሻለ እንደሆነ ልዩ ትኩረት በመስጠት.

በሶስተኛ ደረጃ፣ MongoDB በመልካም የሚታወቅ መሆኑን አፅንዖት መስጠት እፈልጋለሁ መስፋፋት - እና ይህ የውሂብ ጎታ ቁልፍ ባህሪያት አንዱ ነው. ጭነቱ ምን እንደሚሆን አስቀድመው ካላወቁ MongoDB ፍጹም ነው። በተጨማሪም, ከሳጥን ውጭ ያሉ ቅጦችን ይደግፋል ሻርዲንግ и ማባዛት, እና ይህ ሁሉ በጣም ግልፅ ነው, ማለትም ለመስራት በጣም ምቹ ነው.

በ .. ቃላቶች MongoDB ውስጥ ከዚያ፡-

  • የውሂብ ጎታዎች የውሂብ ጎታዎች (መርሃግብሮች, የጠረጴዛዎች ስብስቦች);
  • በሞንጎዲቢ ውስጥ እንደዚህ ያለ ነገር አለ ስብስብ - ይህ የሠንጠረዥ አናሎግ እና የሰነዶች ስብስብ ነው, በምክንያታዊነት, መገናኘት ያለበት;
  • ሰነዶች ከሕብረቁምፊ ጋር ተመሳሳይ ናቸው።

የውሂብ ጎታ መፍጠር እና ቀላል መጠይቆች

የውሂብ ጎታ ለመፍጠር እሱን መጠቀም መጀመር ብቻ ያስፈልግዎታል፡-

use learn

ዌቢናርን ክፈት "MongoDB Basics"

አሁን የሰነዱን ትንሽ ማስገቢያ እናድርግ. ለምሳሌ አውሮራ የተባለ ዩኒኮርን ይሁን፡-

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

db - የውሂብ ጎታውን ለመድረስ ዓለም አቀፍ ነገር ፣ ማለትም ፣ በእውነቱ ፣ “ሞንጋ” ራሱ። ለሻርዲንግ ጥቅም ላይ ይውላል shለማባዛት - rs.

እቃው ምን ትዕዛዞች አሉት? db:

ዌቢናርን ክፈት "MongoDB Basics"

ስለዚህ ፣ ወደ ትዕዛዛችን እንመለስ ፣ በዚህ ምክንያት ኮንሶሉ አንድ መስመር እንደገባ ሪፖርት ያደርጋል ።

ዌቢናርን ክፈት "MongoDB Basics"

ቃሉ unicorns በቡድን ውስጥ db.unicorns.insert({name: 'Aurora', gender: 'f', weight: 450}) ስብስብን ያመለክታል. እባክዎን እዚህ ላይ ስብስቡን አልገለፅነውም ወይም አልፈጠርነውም ነገር ግን በቀላሉ 'unicorns' ጻፍን፣ አስገባን እና ስብስብ እንዳለን ልብ ይበሉ።

እና በዚህ መንገድ ነው የምንችለው ሁሉንም ስብስቦቻችንን ያግኙ:

db.getCollectionNames()

እናም ይቀጥላል. ይችላል ሌላ አስገባ ስብስብ፡-

ዌቢናርን ክፈት "MongoDB Basics"

አሁን እንጠይቅ የተሟላ ስብስብ (በእኛ ሁኔታ የውሂብ ጎታ ተመሳሳይ ስም ስላላቸው ሁለት ዩኒኮርን መረጃዎችን እንደያዘ እናስታውስዎታለን)

db.unicorns.find()

እባክዎን ያስተውሉ፣ የእኛ JSON (ስም፣ ጾታ፣ ክብደት፣ አንዳንድ ልዩ ነገር መለያ አለ)።

ዌቢናርን ክፈት "MongoDB Basics"

አሁን ተመሳሳይ ስሞች ያላቸውን ሁለት ተጨማሪ ዩኒኮርን እናስገባ።

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

እና የሆነውን እንመልከት፡-

ዌቢናርን ክፈት "MongoDB Basics"

እንደሚመለከቱት, ተጨማሪ መስኮች አሉን: መኖሪያ ቤት и ትል, አውሮራ የሌለው.

ጥቂት ተጨማሪ ዩኒኮርን እንጨምር፡-

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

ስለዚህ፣ ጃቫ ስክሪፕትን በመጠቀም አራት ተጨማሪ ነገሮችን አስገብተናል፡-

ዌቢናርን ክፈት "MongoDB Basics"

በእርስዎ አስተያየት, በየትኛው የውሂብ ጎታዎች ውስጥ የፓስፖርት መረጃን ለማከማቸት የበለጠ አመቺ ነው: ተዛማጅ የውሂብ ጎታዎች ወይም ሞንጎ?

መልሱ ግልጽ ነው - በሞንጋ, እና ከላይ ያለው ምሳሌ ይህንን በደንብ ያሳያል. በሩሲያ ፌዴሬሽን ውስጥ KLADR ህመም እንደሆነ ምስጢር አይደለም. እና ሞንጋ ከአድራሻዎች ጋር በጥሩ ሁኔታ ይጣጣማል, ምክንያቱም ሁሉንም ነገር እንደ ድርድር ማዘጋጀት ይችላሉ, እና ህይወት በጣም ቀላል ይሆናል. እና ጥሩ ነው ለ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"

አሁን ለሰነዶቹ ትኩረት ይስጡ. እንደ ዶብ። ሁሉንም ዕቃዎች እናከማቻለን. በተጨማሪም ዩኒኮርን ስለሚወደው ነገር መረጃ አለ, እና ሁሉም ሰው ይህ መረጃ የለውም. ስለዚህ የውስጥ ውሸቶች ሙሉ ድርድር.

በነገራችን ላይ ውጤቱን ይበልጥ በሚያምር ሁኔታ ለማሳየት በፍለጋ ትዕዛዙ መጨረሻ ላይ ዘዴውን መደወል ይችላሉ .pretty():

ዌቢናርን ክፈት "MongoDB Basics"

ማግኘት ከፈለጉ ስለ የቅርብ ጊዜ ስህተት መረጃ, የሚከተለውን ትዕዛዝ ተጠቀም:

db.getLastError()

ይህ ከእያንዳንዱ ማስገባት በኋላ ሊከናወን ይችላል ወይም ጭንቀትን መጻፍ ማዋቀር ይችላሉ። ስለ እሱ ውስጥ ማንበብ ይሻላል ኦፊሴላዊ ሰነዶችበነገራችን ላይ በሞንጋ ውስጥ በጣም መረጃ ሰጭ ነው። በነገራችን ላይ በሀብሬ ላይም ይገኛል። ጥሩ ጽሑፍ በዚህ አጋጣሚ.

ወደ ውስብስብ ጥያቄዎች እንሂድ

ትክክለኛ የመስክ ዋጋ ጥያቄ፡-

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

እንደዚህ አይነት ጥያቄ በመጻፍ በኮንሶል ውፅዓት ውስጥ የሁሉም ወንድ ዩኒኮርን ዝርዝር ይደርሰናል።

እርስዎም ማድረግ ይችላሉ በአንድ ጊዜ በበርካታ መስኮች ላይ ጥያቄበጾታ እና በክብደት፡-

ዌቢናርን ክፈት "MongoDB Basics"

ከላይ, ለልዩ ትኩረት ይስጡ $gt መራጭ, ይህም ከ 700 በላይ የሚመዝኑ ሁሉንም ወንድ ዩኒኮርን ለማራባት ያስችልዎታል.

ማረጋገጥ ትችላለህ ሜዳው በፍፁም አለ?:

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

ወይም ስለዚህ:

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

የሚቀጥለው ቡድን ዩኒኮርን ያወጣል ፣ ስማቸው በ A ወይም a ፊደላት የሚጀምር፡-

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

አሁን እናስብበት ድርድር ፍለጋ. ጥያቄ ቁጥር 1፡ ይህ ትእዛዝ ምን ይወጣል፡-

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

ልክ ነው: ፖም የሚወዱ ሁሉ.

የሚከተለው ትዕዛዝ እነዚያን የዩኒኮርን ውሂብ ብቻ ይመልሳል ፖም እና ሐብሐብ ብቻ;

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

እና አንድ ተጨማሪ ትዕዛዝ:

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

በእኛ ሁኔታ ምንም ነገር አይመለስም ፣ ምክንያቱም ድርድርን ስናልፍ ፣ የመጀመሪያው አካል ከመጀመሪያው ፣ ሁለተኛው ከሁለተኛው ፣ ወዘተ ጋር ይነፃፀራል ፣ ማለትም ፣ ድርድር እንዲሁ መመሳሰል አለበት በአቀማመጥ እነዚህ እሴቶች.

እና ይሄ ይመስላል የ"OR" ኦፕሬተርን በመጠቀም በድርድር በኩል መፈለግ:

ዌቢናርን ክፈት "MongoDB Basics"

የሚከተለው ምሳሌ ያሳየናል $all ኦፕሬተርን በመጠቀም ይፈልጉ. እና እዚህ ቅደም ተከተል አስፈላጊ አይደለም:

ዌቢናርን ክፈት "MongoDB Basics"

እንዲሁም እንችላለን በድርድር መጠን ይፈልጉ

ዌቢናርን ክፈት "MongoDB Basics"

ግን መጠኑ ከአንድ በላይ የሆነ ድርድር ለማግኘት ብንፈልግስ? ለዚህ ኦፕሬተር አለ $ የትየበለጠ ውስብስብ ነገሮችን መጻፍ የሚችሉበት:

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

በነገራችን ላይ ልምምድ ማድረግ ከፈለጉ. አለህ በትእዛዞች ፋይል ያድርጉ.

የጠቋሚ ባህሪያት

እስቲ ትንሽ እንዝለቅ እና ስለ ሞንጎ ባህሪያት ጥቂት ቃላት እንበል፡-

  • አግኝ () እና ሌሎች ክዋኔዎች መረጃን አይመልሱም - "ጠቋሚ" የሚባሉትን ይመለሳሉ;
  • መረጃው ሲታተም የምናየው የአስተርጓሚው ስራ ነው።

በመተየብ ላይ db.unicorns.ማግኘት ያለ ቅንፍ፣ ጥያቄውን እናገኛለን፡-

ዌቢናርን ክፈት "MongoDB Basics"

ጥያቄዎችን ማሟላታችንን እንቀጥላለን

የ$ in ኦፕሬተርም አለ፡-

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

ዌቢናርን ክፈት "MongoDB Basics"

አሁን ስለ ማሻሻያ እንነጋገር. ለምሳሌ የRooooodles ዩኒኮርን ክብደት እንለውጥ፡-

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

በድርጊታችን ምክንያት, ሰነዱ ሙሉ በሙሉ ይዘምናልእና አንድ የተወሰነ መስክ ብቻ ይቀራል፡-

ዌቢናርን ክፈት "MongoDB Basics"

ማለትም ፣ ለዕቃችን የሚቀረው ብቸኛው ነገር ክብደት 2222 እና ፣ በእርግጥ ፣ መታወቂያ ነው።

በመጠቀም ሁኔታውን ማስተካከል ይችላሉ $ አዘጋጅ:

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

ዌቢናርን ክፈት "MongoDB Basics"

አንድ አጋጣሚም አለ እሴቶችን መጨመር:

ዌቢናርን ክፈት "MongoDB Basics"

እና ደግሞ አለ መቃወም - የዝማኔ እና የማስገባት ጥምረት;

ዌቢናርን ክፈት "MongoDB Basics"

እንዴት እንደሚደረግ እነሆ የመስክ ምርጫ:

ዌቢናርን ክፈት "MongoDB Basics"

ዌቢናርን ክፈት "MongoDB Basics"

ስለ ጥቂት ቃላት ማከል ይቀራል ይዝለሉ и ወሰን:

ዌቢናርን ክፈት "MongoDB Basics"

የስራ ባልደረቦች፣ ያ ብቻ ነው፣ ዝርዝሮቹን ማወቅ ከፈለጉ፣ ሙሉውን ቪዲዮ ይመልከቱ. እና አስተያየትዎን መተውዎን አይርሱ!

ምንጭ: hab.com

አስተያየት ያክሉ