ویبنار "MongoDB Basics" کھولیں

دوستو، ایک اور کورس کا آغاز "ڈیٹا بیس" کل ہوگا، لہذا ہم نے ایک روایتی کھلا سبق رکھا، جس کی ریکارڈنگ آپ دیکھ سکتے ہیں۔ یہاں. اس بار ہم نے مقبول MongoDB ڈیٹا بیس کے بارے میں بات کی: ہم نے کچھ باریکیوں کا مطالعہ کیا، آپریشن کی بنیادی باتوں، صلاحیتوں اور فن تعمیر کو دیکھا۔ ہم نے کچھ یوزر کیسز کو بھی چھوا۔

ویبنار "MongoDB Basics" کھولیں

ویبنار کا انعقاد کیا گیا۔ آئیون بیلٹسٹی موبل میں سرور ڈیولپمنٹ کے سربراہ۔

مونگو ڈی بی کی خصوصیات

منگو ڈی بی ایک اوپن سورس دستاویز پر مبنی DBMS ہے جس کے لیے ٹیبل اسکیما کی تفصیل کی ضرورت نہیں ہے۔ اسے NoSQL کے طور پر درجہ بندی کیا گیا ہے اور BSON (بائنری JSON) کا استعمال کرتا ہے۔ سکیل ایبل آؤٹ آف دی باکس، C++ میں لکھا ہوا ہے اور JavaScript نحو کو سپورٹ کرتا ہے۔ کوئی SQL سپورٹ نہیں ہے۔

MongoDB کے پاس بہت سی مشہور پروگرامنگ زبانوں (C, C++, C#, Go, Java, JavaScript, Perl, PHP, Python, Ruby, وغیرہ) کے ڈرائیور ہیں۔ دیگر پروگرامنگ زبانوں کے لیے غیر سرکاری اور کمیونٹی سے تعاون یافتہ ڈرائیور بھی موجود ہیں۔

ٹھیک ہے، آئیے ان بنیادی کمانڈز کو دیکھتے ہیں جو مفید ہو سکتے ہیں۔

لہذا، ڈوکر میں مونگو ڈی بی کو تعینات کرنے کے لیے، ہم لکھتے ہیں:

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 ایک مکمل JavaScript ترجمان ہے۔.

MongoDB کب استعمال کریں؟

ایک کہانی ہے کہ سلیکون ویلی میں اوسطاً اسٹارٹ اپ وہ شخص ہے جس نے ایک ہفتہ قبل کتاب "HTML for Dummies" کھولی تھی۔ وہ کون سا اسٹیک منتخب کرے گا؟ اس بات سے اتفاق کرتے ہیں کہ یہ اس کے لیے بہت آسان ہے جب، واضح وجوہات کی بنا پر، اس کے پاس اپنے براؤزر میں JavaScript ہے، Node.js سرور پر چل رہا ہے، اور JavaScript ڈیٹا بیس میں بھی چل رہا ہے۔ یہ پوائنٹ نمبر 1 ہے۔

دوسرا، وہاں ہے عظیم کارکردگی پیٹر زیٹسیف، روس میں ڈیٹا بیس کے بہترین ماہرین میں سے ایک۔ اس میں، پیٹر MySQL اور MongoDB کے بارے میں بات کرتا ہے، اس بات پر خصوصی توجہ دیتا ہے کہ کب اور کیا استعمال کرنا بہتر ہے۔

تیسرا، میں اس بات پر زور دینا چاہوں گا کہ 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}) مجموعہ کی طرف اشارہ کرتا ہے۔ براہ کرم یہاں نوٹ کریں کہ ہم نے مجموعہ کی وضاحت یا تخلیق نہیں کی، بلکہ صرف 'یونیکورنز' لکھا، ایک داخل کیا، اور ہمارے پاس ایک مجموعہ تھا۔

اور اس طرح ہم کر سکتے ہیں۔ ہمارے تمام مجموعے حاصل کریں۔:

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()

یہ ہر اندراج کے بعد کیا جا سکتا ہے، یا آپ Write Concern کو ترتیب دے سکتے ہیں۔ اس کے بارے میں پڑھنا بہتر ہے۔ سرکاری دستاویزات، جو، ویسے، مونگا میں بہت معلوماتی ہے۔ ویسے، یہ Habré پر بھی دستیاب ہے۔ اچھا مضمون اس کے بارے میں

آئیے مزید پیچیدہ سوالات کی طرف چلتے ہیں۔

قطعی فیلڈ ویلیو کے لیے استفسار:

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

ویسے، اگر آپ مشق کرنا چاہتے ہیں، آپ وہاں ہیں کمانڈ کے ساتھ فائل.

کرسر کی خصوصیات

آئیے تھوڑا سا بحث کرتے ہیں اور مونگا کی خصوصیات کے بارے میں کچھ الفاظ کہتے ہیں:

  • find() اور دیگر آپریشنز ڈیٹا واپس نہیں کرتے ہیں - وہ ایک نام نہاد "کرسر" واپس کرتے ہیں۔
  • حقیقت یہ ہے کہ ہم اعداد و شمار کو پرنٹ ہوتے دیکھتے ہیں یہ ترجمان کا کام ہے۔

ٹائپنگ db.unicorns.find قوسین کے بغیر، ہمیں پرامپٹ ملتا ہے:

ویبنار "MongoDB Basics" کھولیں

ہم درخواستوں کو پورا کرتے رہتے ہیں۔

$in آپریٹر بھی ہے:

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

ویبنار "MongoDB Basics" کھولیں

اب بات کرتے ہیں اپ ڈیٹ کے بارے میں. مثال کے طور پر، آئیے Rooooodles ایک تنگاوالا کا وزن تبدیل کریں:

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

ہمارے اعمال کے نتیجے میں، دستاویز مکمل طور پر اپ ڈیٹ کیا جائے گا، اور اس میں صرف ایک مخصوص فیلڈ باقی رہے گا:

ویبنار "MongoDB Basics" کھولیں

یعنی صرف ایک چیز جو ہمارے اعتراض کے لیے باقی رہے گی وہ ہے وزن 2222 اور یقیناً id۔

آپ استعمال کرکے صورتحال کو درست کرسکتے ہیں۔ $سیٹ:

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" کھولیں

اور وہاں بھی ہے۔ upsert - اپ ڈیٹ اور داخل کا مجموعہ:

ویبنار "MongoDB Basics" کھولیں

یہاں یہ ہے کہ یہ کیسے کیا گیا ہے۔ میدان کا انتخاب:

ویبنار "MongoDB Basics" کھولیں

ویبنار "MongoDB Basics" کھولیں

اس کے بارے میں چند الفاظ کا اضافہ کرنا باقی ہے۔ چھوڑ دیں и محدود:

ویبنار "MongoDB Basics" کھولیں

ساتھیوں، بس، اگر آپ تفصیلات جاننا چاہتے ہیں، پوری ویڈیو دیکھیں. اور اپنی رائے دینا نہ بھولیں!

ماخذ: www.habr.com

نیا تبصرہ شامل کریں