ጓደኞች፣ ሌላ ኮርስ መጀመር
ዌቢናር ተካሄደ
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
እንደዚህ ይሆናል ደንበኛ ማስጀመር ሞንጎ ዲቢ
አሁን ባህላዊውን እንፃፍ ሠላም ዓለም:
print (“Hello world!”)
ከዛ በኋላ - ዑደቱን እንጀምር:
እርስዎ እንዳስተዋሉ, ከእኛ በፊት መደበኛ JS, እና MongoDB ሙሉ የጃቫ ስክሪፕት አስተርጓሚ ነው።.
MongoDB መቼ መጠቀም ይቻላል?
በሲሊኮን ቫሊ ውስጥ ያለው አማካይ ጅምር ከሳምንት በፊት "HTML for Dummies" የሚለውን መጽሐፍ የከፈተ ሰው ነው የሚል ታሪክ አለ። የትኛውን ቁልል ይመርጣል? ግልጽ በሆኑ ምክንያቶች ጃቫ ስክሪፕት በአሳሹ ውስጥ ሲኖረው፣ Node.js በአገልጋዩ ላይ ሲሰራ እና ጃቫስክሪፕት በመረጃ ቋቱ ውስጥ ሲሰራ ለእሱ በጣም ምቹ እንደሆነ ይስማሙ። ይህ ነጥብ ቁጥር 1 ነው።
በሁለተኛ ደረጃ, አለ
በሶስተኛ ደረጃ፣ MongoDB በመልካም የሚታወቅ መሆኑን አፅንዖት መስጠት እፈልጋለሁ መስፋፋት - እና ይህ የውሂብ ጎታ ቁልፍ ባህሪያት አንዱ ነው. ጭነቱ ምን እንደሚሆን አስቀድመው ካላወቁ MongoDB ፍጹም ነው። በተጨማሪም, ከሳጥን ውጭ ያሉ ቅጦችን ይደግፋል ሻርዲንግ и ማባዛት, እና ይህ ሁሉ በጣም ግልፅ ነው, ማለትም ለመስራት በጣም ምቹ ነው.
በ .. ቃላቶች MongoDB ውስጥ ከዚያ፡-
- የውሂብ ጎታዎች የውሂብ ጎታዎች (መርሃግብሮች, የጠረጴዛዎች ስብስቦች);
- በሞንጎዲቢ ውስጥ እንደዚህ ያለ ነገር አለ ስብስብ - ይህ የሠንጠረዥ አናሎግ እና የሰነዶች ስብስብ ነው, በምክንያታዊነት, መገናኘት ያለበት;
- ሰነዶች ከሕብረቁምፊ ጋር ተመሳሳይ ናቸው።
የውሂብ ጎታ መፍጠር እና ቀላል መጠይቆች
የውሂብ ጎታ ለመፍጠር እሱን መጠቀም መጀመር ብቻ ያስፈልግዎታል፡-
use learn
አሁን የሰነዱን ትንሽ ማስገቢያ እናድርግ. ለምሳሌ አውሮራ የተባለ ዩኒኮርን ይሁን፡-
db.unicorns.insert({name: 'Aurora', gender: 'f', weight: 450})
db - የውሂብ ጎታውን ለመድረስ ዓለም አቀፍ ነገር ፣ ማለትም ፣ በእውነቱ ፣ “ሞንጋ” ራሱ። ለሻርዲንግ ጥቅም ላይ ይውላል shለማባዛት - rs.
እቃው ምን ትዕዛዞች አሉት? db:
ስለዚህ ፣ ወደ ትዕዛዛችን እንመለስ ፣ በዚህ ምክንያት ኮንሶሉ አንድ መስመር እንደገባ ሪፖርት ያደርጋል ።
ቃሉ unicorns
በቡድን ውስጥ db.unicorns.insert({name: 'Aurora', gender: 'f', weight: 450})
ስብስብን ያመለክታል. እባክዎን እዚህ ላይ ስብስቡን አልገለፅነውም ወይም አልፈጠርነውም ነገር ግን በቀላሉ 'unicorns' ጻፍን፣ አስገባን እና ስብስብ እንዳለን ልብ ይበሉ።
እና በዚህ መንገድ ነው የምንችለው ሁሉንም ስብስቦቻችንን ያግኙ:
db.getCollectionNames()
እናም ይቀጥላል. ይችላል ሌላ አስገባ ስብስብ፡-
አሁን እንጠይቅ የተሟላ ስብስብ (በእኛ ሁኔታ የውሂብ ጎታ ተመሳሳይ ስም ስላላቸው ሁለት ዩኒኮርን መረጃዎችን እንደያዘ እናስታውስዎታለን)
db.unicorns.find()
እባክዎን ያስተውሉ፣ የእኛ JSON (ስም፣ ጾታ፣ ክብደት፣ አንዳንድ ልዩ ነገር መለያ አለ)።
አሁን ተመሳሳይ ስሞች ያላቸውን ሁለት ተጨማሪ ዩኒኮርን እናስገባ።
db.unicorns.insert({name: 'Leto', gender: 'm',
home: 'Arrakeen', worm: false})
db.unicorns.insert({name: 'Leto', gender: 'm',
home: 'Arrakeen', worm: false})
እና የሆነውን እንመልከት፡-
እንደሚመለከቱት, ተጨማሪ መስኮች አሉን: መኖሪያ ቤት и ትል, አውሮራ የሌለው.
ጥቂት ተጨማሪ ዩኒኮርን እንጨምር፡-
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}])
ስለዚህ፣ ጃቫ ስክሪፕትን በመጠቀም አራት ተጨማሪ ነገሮችን አስገብተናል፡-
በእርስዎ አስተያየት, በየትኛው የውሂብ ጎታዎች ውስጥ የፓስፖርት መረጃን ለማከማቸት የበለጠ አመቺ ነው: ተዛማጅ የውሂብ ጎታዎች ወይም ሞንጎ?
መልሱ ግልጽ ነው - በሞንጋ, እና ከላይ ያለው ምሳሌ ይህንን በደንብ ያሳያል. በሩሲያ ፌዴሬሽን ውስጥ 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});
አሁን ለሰነዶቹ ትኩረት ይስጡ. እንደ ዶብ። ሁሉንም ዕቃዎች እናከማቻለን. በተጨማሪም ዩኒኮርን ስለሚወደው ነገር መረጃ አለ, እና ሁሉም ሰው ይህ መረጃ የለውም. ስለዚህ የውስጥ ውሸቶች ሙሉ ድርድር.
በነገራችን ላይ ውጤቱን ይበልጥ በሚያምር ሁኔታ ለማሳየት በፍለጋ ትዕዛዙ መጨረሻ ላይ ዘዴውን መደወል ይችላሉ .pretty()
:
ማግኘት ከፈለጉ ስለ የቅርብ ጊዜ ስህተት መረጃ, የሚከተለውን ትዕዛዝ ተጠቀም:
db.getLastError()
ይህ ከእያንዳንዱ ማስገባት በኋላ ሊከናወን ይችላል ወይም ጭንቀትን መጻፍ ማዋቀር ይችላሉ። ስለ እሱ ውስጥ ማንበብ ይሻላል
ወደ ውስብስብ ጥያቄዎች እንሂድ
ትክክለኛ የመስክ ዋጋ ጥያቄ፡-
db.unicorns.find({gender: 'm'})
እንደዚህ አይነት ጥያቄ በመጻፍ በኮንሶል ውፅዓት ውስጥ የሁሉም ወንድ ዩኒኮርን ዝርዝር ይደርሰናል።
እርስዎም ማድረግ ይችላሉ በአንድ ጊዜ በበርካታ መስኮች ላይ ጥያቄበጾታ እና በክብደት፡-
ከላይ, ለልዩ ትኩረት ይስጡ $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" ኦፕሬተርን በመጠቀም በድርድር በኩል መፈለግ:
የሚከተለው ምሳሌ ያሳየናል $all ኦፕሬተርን በመጠቀም ይፈልጉ. እና እዚህ ቅደም ተከተል አስፈላጊ አይደለም:
እንዲሁም እንችላለን በድርድር መጠን ይፈልጉ
ግን መጠኑ ከአንድ በላይ የሆነ ድርድር ለማግኘት ብንፈልግስ? ለዚህ ኦፕሬተር አለ $ የትየበለጠ ውስብስብ ነገሮችን መጻፍ የሚችሉበት:
db.unicorns.find({$where: function() { return this.loves && (this.loves.length > 1) } })
በነገራችን ላይ ልምምድ ማድረግ ከፈለጉ.
የጠቋሚ ባህሪያት
እስቲ ትንሽ እንዝለቅ እና ስለ ሞንጎ ባህሪያት ጥቂት ቃላት እንበል፡-
- አግኝ () እና ሌሎች ክዋኔዎች መረጃን አይመልሱም - "ጠቋሚ" የሚባሉትን ይመለሳሉ;
- መረጃው ሲታተም የምናየው የአስተርጓሚው ስራ ነው።
በመተየብ ላይ db.unicorns.ማግኘት ያለ ቅንፍ፣ ጥያቄውን እናገኛለን፡-
ጥያቄዎችን ማሟላታችንን እንቀጥላለን
የ$ in ኦፕሬተርም አለ፡-
db.unicorns.find({weight: {$in: [650, 704]}})
አሁን ስለ ማሻሻያ እንነጋገር. ለምሳሌ የRooooodles ዩኒኮርን ክብደት እንለውጥ፡-
db.unicorns.update({name: "Roooooodles"}, {weight: 2222})
በድርጊታችን ምክንያት, ሰነዱ ሙሉ በሙሉ ይዘምናልእና አንድ የተወሰነ መስክ ብቻ ይቀራል፡-
ማለትም ፣ ለዕቃችን የሚቀረው ብቸኛው ነገር ክብደት 2222 እና ፣ በእርግጥ ፣ መታወቂያ ነው።
በመጠቀም ሁኔታውን ማስተካከል ይችላሉ $ አዘጋጅ:
db.unicorns.update({_id: ObjectId("5da6ea4d9703b8be0089e6db")}, {$set: { "name" : "Roooooodles", "dob" : ISODate("1979-08-18T18:44:00Z"), "loves" : [ "apple" ], "gender" : "m", "vampires" : 99}})
አንድ አጋጣሚም አለ እሴቶችን መጨመር:
እና ደግሞ አለ መቃወም - የዝማኔ እና የማስገባት ጥምረት;
እንዴት እንደሚደረግ እነሆ የመስክ ምርጫ:
ስለ ጥቂት ቃላት ማከል ይቀራል ይዝለሉ и ወሰን:
የስራ ባልደረቦች፣ ያ ብቻ ነው፣ ዝርዝሮቹን ማወቅ ከፈለጉ፣
ምንጭ: hab.com