دوستو، ٻيو ڪورس لانچ
ويبينار منعقد ڪيو ويو
MongoDB خاصيتون
منڊو ڊي هڪ کليل ذريعو دستاويز تي مبني DBMS آهي جنهن کي ٽيبل اسڪيما جي وضاحت جي ضرورت ناهي. اهو NoSQL جي طور تي درجه بندي ڪيو ويو آهي ۽ استعمال ڪري ٿو BSON (بائنري JSON). اسڪيلبل آئوٽ آف دي باڪس، C++ ۾ لکيل ۽ JavaScript نحو کي سپورٽ ڪري ٿو. ڪو به SQL سپورٽ نه آهي.
MongoDB ڪيترن ئي مشهور پروگرامنگ ٻولين لاءِ ڊرائيور آهن (C, C++, C#, Go, Java, JavaScript, Perl, PHP, Python, Ruby, etc.). ٻين پروگرامنگ ٻولين لاءِ غير رسمي ۽ ڪميونٽي-سپورٽ ڊرائيور پڻ آهن.
خير، اچو ته بنيادي حڪمن تي نظر رکون جيڪي ڪارائتو ٿي سگهن ٿيون.
تنهن ڪري، ڊڪر ۾ MongoDB کي ترتيب ڏيڻ لاء، اسين لکون ٿا:
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 ڪڏهن استعمال ڪجي؟
هڪ ڪهاڻي آهي ته سلڪون وادي ۾ اوسط شروعات اهو شخص آهي جنهن هڪ هفتي اڳ ڪتاب “HTML for Dummies” کوليو. هو ڪهڙو اسٽيڪ چونڊيندو؟ اتفاق ڪيو ته اهو هن لاءِ تمام آسان آهي جڏهن، واضح سببن لاءِ، هن وٽ پنهنجي برائوزر ۾ JavaScript آهي، Node.js سرور تي هلندڙ آهي، ۽ JavaScript به ڊيٽابيس ۾ هلندي آهي. هي نقطو نمبر 1 آهي.
ٻيو، اتي آهي
ٽيون، مان زور ڏيڻ چاهيان ٿو ته مونگو ڊي بي جي خاصيت آهي سٺي پيماني تي - ۽ هي ڊيٽابيس جي اهم خاصيتن مان هڪ آهي. جيڪڏهن توهان اڳ ۾ نه ٿا ڄاڻو ته لوڊ ڇا ٿيندو، MongoDB مڪمل آهي. ان کان علاوه، ان کي سپورٽ ڪري ٿو آئوٽ آف باڪس نمونن جهڙوڪ ڇڪڻ и نقل، ۽ اهو سڀ ڪجهه بلڪل شفاف ٿي چڪو آهي، اهو آهي، اهو ڪم ڪرڻ تمام آسان آهي.
جي حوالي سان اصطلاح MongoDB ۾ پوء:
- ڊيٽابيس ڊيٽابيس آهن (اسڪيمون، جدولن جو مجموعو)؛
- MongoDB ۾ هڪ اهڙي شيء آهي جيئن گڏ ڪرڻ - هي هڪ ٽيبل جو هڪ اينالاگ آهي ۽ دستاويزن جو هڪ سيٽ آهي، جيڪو منطقي طور تي ڳنڍيل هجڻ گهرجي؛
- دستاويز هڪ تار جي برابر آهن.
ڊيٽابيس ٺاھڻ ۽ سادو سوال
ڊيٽابيس ٺاهڻ لاء، توهان کي صرف ان کي استعمال ڪرڻ شروع ڪرڻ جي ضرورت آهي:
use learn
هاڻي اچو ته دستاويز جو هڪ ننڍڙو داخل ڪريو. اچو ته، مثال طور، ارورا نالي هڪ unicorn:
db.unicorns.insert({name: 'Aurora', gender: 'f', weight: 450})
db - ڊيٽابيس تائين رسائي حاصل ڪرڻ لاء هڪ عالمي اعتراض، اهو آهي، حقيقت ۾، "مونگا" پاڻ. ڇڪڻ لاء استعمال ٿيل shنقل لاءِ - rs.
اعتراض کي ڪهڙو حڪم آهي؟ db:
تنهن ڪري، اچو ته اسان جي حڪم ڏانهن موٽون، جنهن جي نتيجي ۾ ڪنسول رپورٽ ڪندو ته هڪ لائن داخل ڪئي وئي آهي:
لفظ unicorns
هڪ ٽيم ۾ db.unicorns.insert({name: 'Aurora', gender: 'f', weight: 450})
مجموعو ظاهر ڪري ٿو. مھرباني ڪري ھتي ياد رکو ته اسان مجموعو بيان يا ٺاھيو نه آھي، پر صرف لکيو آھي 'يونيڪورن'، ھڪڙو داخل ڪيو، ۽ اسان وٽ ھڪڙو مجموعو آھي.
۽ اهو اسان ڪيئن ڪري سگهون ٿا اسان جا سڀئي مجموعا حاصل ڪريو:
db.getCollectionNames()
۽ ايئن. ڪري ٻيو داخل ڪريو جمع:
هاڻي اچو ته پڇو مڪمل جمع (اسان توهان کي ياد ڏياريون ٿا ته اسان جي صورت ۾ ڊيٽابيس اڳ ۾ ئي ساڳئي نالي سان ٻن unicorns بابت معلومات تي مشتمل آهي):
db.unicorns.find()
مهرباني ڪري نوٽ ڪريو، هتي اسان جو JSON آهي (هڪ نالو، جنس، وزن، ڪجهه منفرد اعتراض جي سڃاڻپ ڪندڙ آهي):
ھاڻي اچو ته ساڳين نالن سان ڪجھ وڌيڪ unicorns داخل ڪريون:
db.unicorns.insert({name: 'Leto', gender: 'm',
home: 'Arrakeen', worm: false})
db.unicorns.insert({name: 'Leto', gender: 'm',
home: 'Arrakeen', worm: false})
۽ اچو ته ڏسون ڇا ٿيو:
جئين توهان ڏسي سگهو ٿا، اسان وٽ اضافي شعبا آهن: گهر и کڙا، جيڪو Aurora وٽ ناهي.
اچو ته ڪجھ وڌيڪ unicorns شامل ڪريو:
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 لاءِ استعمال ڪندڙ ڪيس.
اچو ته وڌيڪ 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});
هاڻي دستاويز تي ڌيان ڏيو. جيئن ڊب اسان سموريون شيون ذخيرو ڪندا آهيون. اتي پڻ معلومات آهي ته هڪ يونيسيور ڇا پيار ڪندو آهي، ۽ هر ڪنهن کي اها ڄاڻ ناهي. سو اندر ۾ ڪوڙ مڪمل صف.
رستي جي ذريعي، نتيجن کي وڌيڪ سهڻي نموني ڏيکارڻ لاء، توهان ڳولا جي حڪم جي آخر ۾ طريقي سان سڏي سگهو ٿا .pretty()
:
جيڪڏهن توهان کي حاصل ڪرڻ جي ضرورت آهي تازي غلطي بابت ڄاڻ، ھيٺ ڏنل حڪم استعمال ڪريو:
db.getLastError()
اهو ٿي سگهي ٿو هر داخل ٿيڻ کان پوءِ، يا توهان ترتيب ڏئي سگهو ٿا Write Concern. ان جي باري ۾ پڙهڻ لاء بهتر آهي
اچو ته وڌيڪ پيچيده سوالن ڏانهن وڃو
درست فيلڊ جي قيمت لاء سوال:
db.unicorns.find({gender: 'm'})
اهڙي درخواست لکڻ سان، اسان ڪنسول آئوٽ پٽ ۾ سڀني مرد يونيڪارن جي لسٽ حاصل ڪنداسين.
توهان پڻ ڪري سگهو ٿا هڪ ئي وقت ڪيترن ئي شعبن تي سوالجنس ۽ وزن جي لحاظ کان:
مٿي، خاص تي ڌيان ڏيو $gt چونڊيندڙ، جيڪو توهان کي 700 کان وڌيڪ وزن جي سڀني نر يوني ڪورن کي پالڻ جي اجازت ڏئي ٿو.
توهان چيڪ ڪري سگهو ٿا ڇا ميدان بلڪل موجود آهي؟:
db.unicorns.find({vampires: {$exists: false}})
يا ته:
db.unicorns.find({'parents.father': {$exists: true}})
ايندڙ ٽيم يونيسيرن کي ڪڍندي، جن جا نالا الف يا الف سان شروع ٿين ٿا:
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) } })
رستي ۾، جيڪڏهن توهان مشق ڪرڻ چاهيو ٿا،
ڪرسر جون خاصيتون
اچو ته ٿورڙو بحث ڪريون ۽ مونگا جي خاصيتن بابت چند لفظ چئون:
- find() ۽ ٻيا عمل ڊيٽا واپس نه ٿا ڪن - اهي هڪ نام نهاد "ڪرسر" موٽندا آهن؛
- حقيقت اها آهي ته اسان ڏسون ٿا ڊيٽا کي ڇپائي رهيو آهي مترجم جو ڪم.
ٽائپنگ db.unicorns.find بغير قوس جي، اسان کي ترت ملي ٿو:
اسان درخواستن کي پورو ڪرڻ جاري رکون ٿا
$in آپريٽر پڻ آهي:
db.unicorns.find({weight: {$in: [650, 704]}})
هاڻي اچو ته تازه ڪاري بابت ڳالهايون. مثال طور، اچو ته Rooooodles unicorn جو وزن تبديل ڪريون:
db.unicorns.update({name: "Roooooodles"}, {weight: 2222})
اسان جي عملن جي نتيجي ۾، دستاويز مڪمل طور تي اپڊيٽ ڪيو ويندو، ۽ صرف هڪ مخصوص فيلڊ ان ۾ رهندو:
اھو آھي، رڳو ھڪڙي شيء جيڪا اسان جي اعتراض لاء رھندي آھي وزن 2222 ۽، يقينا، id.
توھان استعمال ڪندي صورتحال کي درست ڪري سگھو ٿا $ مقرر:
db.unicorns.update({_id: ObjectId("5da6ea4d9703b8be0089e6db")}, {$set: { "name" : "Roooooodles", "dob" : ISODate("1979-08-18T18:44:00Z"), "loves" : [ "apple" ], "gender" : "m", "vampires" : 99}})
اهو پڻ ممڪن آهي قدرن ۾ واڌارو:
۽ اتي پڻ آهي مٿي ڪرڻ - تازه ڪاري ۽ داخل ڪرڻ جو ميلاپ:
هتي اهو ڪيئن ڪيو ويو آهي ميدان جي چونڊ:
ان جي باري ۾ چند لفظن کي شامل ڪرڻ لاء رهي ٿو چپ ڪريو и حد:
ساٿيو، اهو سڀ ڪجهه آهي، جيڪڏهن توهان تفصيل ڄاڻڻ چاهيو ٿا،
جو ذريعو: www.habr.com