Buka webinar "Dasar MongoDB"

Babaturan, peluncuran kursus sanés "Database" bakal lumangsung isukan, jadi urang ngayakeun palajaran kabuka tradisional, rekaman nu bisa lalajo di dieu. Kali ieu urang ngobrol ngeunaan database MongoDB populér: urang diajar sababaraha subtleties, kasampak di dasar operasi, kamampuhan jeung arsitéktur. Urang ogé keuna kana sababaraha Kasus pamaké.

Buka webinar "Dasar MongoDB"

webinar dilaksanakeun Ivan Sabuk, kapala ngembangkeun server di Citymobil.

Fitur MongoDB

MongoDB mangrupa open source dokumen-berorientasi DBMS nu teu merlukeun pedaran schema tabel. Digolongkeun kana NoSQL sareng nganggo BSON (JSON binér). Scalable out of the box, ditulis dina C ++ tur ngarojong sintaksis JavaScript. Henteu aya dukungan SQL.

MongoDB ngagaduhan supir pikeun seueur basa pamrograman populér (C, C ++, C #, Go, Java, JavaScript, Perl, PHP, Python, Ruby, jsb). Aya ogé supir anu henteu resmi sareng didukung komunitas pikeun basa pamrograman anu sanés.

Nya, hayu urang tingali paréntah dasar anu tiasa mangpaat.

Janten, pikeun nyebarkeun MongoDB di Docker, urang nulis:

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

Kitu kajadianana peluncuran klien MongoDB:

Buka webinar "Dasar MongoDB"

Ayeuna hayu urang nulis hiji tradisional Hello Dunya:

print (“Hello world!”)

Buka webinar "Dasar MongoDB"

Saatos éta - hayu urang ngamimitian siklus:

Buka webinar "Dasar MongoDB"

Sakumaha anjeun perhatikeun, sateuacan urang biasa JS, sarta MongoDB mangrupakeun juru JavaScript full-fledged.

Iraha nganggo MongoDB?

Aya carita yén rata-rata ngamimitian di Silicon Valley nyaéta jalma anu muka buku "HTML for Dummies" saminggu katukang. tumpukan nu bakal anjeunna milih? Satuju yén éta pisan merenah pikeun anjeunna nalika, alesan atra, anjeunna boga JavaScript dina browser na, Node.js ngajalankeun on server, sarta JavaScript ogé ngajalankeun dina database. Ieu titik nomer 1.

Bréh, aya kinerja hébat Peter Zaitsev, salah sahiji spesialis database pangalusna di Rusia. Di jerona, Peter nyarioskeun ngeunaan MySQL sareng MongoDB, nengetan khusus nalika sareng naon anu pangsaéna dianggo.

Katilu, abdi hoyong ngantebkeun yén MongoDB dicirikeun ku alus skalabilitas - sareng ieu mangrupikeun salah sahiji fitur konci pangkalan data. Upami anjeun henteu terang sateuacanna naon bebanna, MongoDB sampurna. Sajaba ti éta, ngarojong out-of-the-box pola kayaning sharding и réplikasi, sarta sakabeh ieu dipigawé rada transparan, nyaeta, eta pisan merenah pikeun digawé.

kalawan hal pikeun terminologi dina MongoDB lajeng:

  • basis data mangrupa basis data (skéma, kumpulan tabel);
  • dina MongoDB aya hal sapertos koléksi - Ieu analog tina tabel sareng sakumpulan dokumén anu, sacara logis, kedah dihubungkeun;
  • dokumén analog jeung string a.

Nyiptakeun pangkalan data sareng patarosan saderhana

Pikeun nyieun pangkalan data, anjeun ngan ukur kedah ngamimitian ngagunakeunana:

use learn

Buka webinar "Dasar MongoDB"

Ayeuna hayu urang ngadamel sisipan leutik dokumen. Hayu éta, contona, hiji unicorn ngaranna Aurora:

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

db - objek global pikeun ngakses database, nyaeta, kanyataanna, "monga" sorangan. Dipaké pikeun sharding sh, pikeun réplikasi - rs.

Paréntah naon anu obyék gaduh? db:

Buka webinar "Dasar MongoDB"

Janten, hayu urang uih deui ka paréntah kami, salaku hasilna konsol bakal ngalaporkeun yén hiji baris diselapkeun:

Buka webinar "Dasar MongoDB"

kecap unicorns dina hiji tim db.unicorns.insert({name: 'Aurora', gender: 'f', weight: 450}) ngalambangkeun kumpulan. Punten dicatet di dieu yén kami henteu ngajelaskeun atanapi nyiptakeun koleksi, tapi ngan saukur nyerat 'unicorns', ngalakukeun sisipan, sareng kami ngagaduhan koleksi.

Sareng ieu kumaha urang tiasa meunang sagala koleksi urang:

db.getCollectionNames()

Teras salajengna. Tiasa nyelapkeun hiji deui kumpulan:

Buka webinar "Dasar MongoDB"

Ayeuna hayu urang nanya kempelan lengkep (Kami ngingetkeun yén dina kasus kami, pangkalan data parantos ngandung inpormasi ngeunaan dua unicorn anu nami anu sami):

db.unicorns.find()

Punten dicatet, ieu JSON kami (aya nami, gender, beurat, sababaraha identifier obyék unik):

Buka webinar "Dasar MongoDB"

Ayeuna hayu urang selapkeun sababaraha langkung unicorns sareng nami anu sami:

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

Sareng hayu urang tingali naon anu kajantenan:

Buka webinar "Dasar MongoDB"

Sakumaha anjeun tiasa tingali, urang gaduh widang tambahan: imah и cacing, nu Aurora teu boga.

Hayu urang tambahkeun sababaraha 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}])

Janten, urang nyelapkeun opat objék deui nganggo JavaScript:

Buka webinar "Dasar MongoDB"

Numutkeun anjeun, dina database mana anu langkung merenah pikeun nyimpen data paspor: database relational atanapi Mongo?

Jawabanna écés - dina Monga, sareng conto di luhur nunjukkeun ieu ogé. Henteu aya rahasia yén KLADR mangrupikeun nyeri dina Féderasi Rusia. Sarta Monga fits kacida alusna jeung alamat, sabab anjeun tiasa nyetél sagalana salaku Asép Sunandar Sunarya, tur hirup bakal jadi loba gampang. Sareng éta saé Kasus pamaké pikeun MongoDB.

Hayu urang tambahkeun deui 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});

Buka webinar "Dasar MongoDB"

Ayeuna nengetan dokumén. Salaku kendang Urang nyimpen sakabéh objék. Aya ogé inpormasi ngeunaan anu dipikacinta unicorn, sareng henteu sadayana gaduh inpormasi ieu. Jadi di jero bohong Asép Sunandar Sunarya pinuh.

Ku jalan kitu, pikeun mintonkeun hasil leuwih beautifully, anjeun tiasa nelepon metoda dina tungtung paréntah pilarian .pretty():

Buka webinar "Dasar MongoDB"

Lamun perlu meunang inpormasi ngeunaan kasalahan panganyarna, nganggo paréntah di handap ieu:

db.getLastError()

Ieu tiasa dilakukeun saatos unggal sisipan, atanapi anjeun tiasa ngonpigurasikeun Tulis Perhatian. Éta langkung saé maca ngeunaan éta dina dokuméntasi resmi, nu, saliwatan, pisan informatif di Monga. Ku jalan kitu, éta ogé sayogi dina Habré artikel alus dina kasempetan ieu.

Hayu urang ngaléngkah ka patarosan anu langkung kompleks

Patarosan pikeun nilai widang pasti:

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

Ku nulis pamundut kitu, urang bakal nampa daptar sakabeh unicorns jalu dina kaluaran konsol.

Anjeun oge bisa ngalakukeun query dina sababaraha widang sakaligus: dumasar gender jeung beurat:

Buka webinar "Dasar MongoDB"

Di luhur, nengetan husus pamilih $gt, nu ngidinan Anjeun pikeun breed sadaya unicorns jalu beuratna leuwih ti 700.

Anjeun tiasa pariksa sawah aya pisan?:

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

Atanapi kitu:

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

Tim salajengna bakal ngaluarkeun unicorns, anu ngaranna dimimitian ku hurup A atawa a:

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

Ayeuna hayu urang nganggap pilarian Asép Sunandar Sunarya. Patarosan #1: Naon anu bakal kaluaran paréntah ieu:

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

Éta leres: sadayana anu resep apel.

Paréntah di handap bakal mulang ngan ukur data unicorn anu ngandung ngan apel sareng samangka:

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

Sareng hiji deui paréntah:

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

Dina hal urang, éta moal balik nanaon, saprak nalika urang lulus hiji Asép Sunandar Sunarya, unsur kahiji dibandingkeun jeung kahiji, kadua jeung kadua, jsb nyaeta, Asép Sunandar Sunarya ogé kudu cocog. ku posisi nilai ieu.

Sareng ieu anu katingalina milarian ngaliwatan hiji Asép Sunandar Sunarya ngagunakeun operator "OR".:

Buka webinar "Dasar MongoDB"

Conto di handap ieu bakal nunjukkeun ka urang milarian nganggo operator $all. Sareng di dieu urutanna henteu penting:

Buka webinar "Dasar MongoDB"

Ogé urang tiasa milarian ku ukuran array:

Buka webinar "Dasar MongoDB"

Tapi kumaha upami urang hoyong milarian susunan anu ukuranana langkung ageung ti hiji? Aya operator pikeun ieu $dimana, anu anjeun tiasa nyerat hal-hal anu langkung kompleks:

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

Ku jalan kitu, upami anjeun hoyong latihan, aya anjeun file kalawan paréntah.

Fitur kursor

Hayu urang nyimpang sakedik sareng ucapkeun sababaraha kecap ngeunaan fitur Monga:

  • manggihan () jeung operasi séjén teu balik data - aranjeunna balik a disebut "kursor";
  • kanyataan yén urang ningali data anu dicitak nyaéta karya juru.

Ngetik db.unicorns.find tanpa kurung, urang meunang ajakan:

Buka webinar "Dasar MongoDB"

Urang terus minuhan requests

Aya ogé operator $in:

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

Buka webinar "Dasar MongoDB"

Ayeuna hayu urang ngobrol ngeunaan update. Salaku conto, hayu urang robih beurat unicorn Rooooodles:

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

Salaku hasil tina lampah urang, dokumen bakal lengkep diropéa, sarta ngan hiji widang nu tangtu bakal tetep di dinya:

Buka webinar "Dasar MongoDB"

Nyaéta, hiji-hijina hal anu bakal tetep pikeun obyék urang nyaéta beurat 2222 sareng, tangtosna, id.

Anjeun tiasa ngabenerkeun kaayaan nganggo $asupkeun:

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

Buka webinar "Dasar MongoDB"

Ieu oge mungkin nilai nambahan:

Buka webinar "Dasar MongoDB"

Sareng aya ogé kesel - kombinasi apdet sareng sisipan:

Buka webinar "Dasar MongoDB"

Ieu kumaha éta dilakukeun pilihan widang:

Buka webinar "Dasar MongoDB"

Buka webinar "Dasar MongoDB"

Eta tetep pikeun nambahkeun sababaraha kecap ngeunaan ngaliwatan и wates:

Buka webinar "Dasar MongoDB"

Kolega, éta sadayana, upami anjeun hoyong terang detilna, lalajo sakabéh video. Sarta ulah poho pikeun ninggalkeun komentar anjeun!

sumber: www.habr.com

Tambahkeun komentar