Open Webinar "MongoDB Basics"

Frënn, eng aner Course lancéiert "Datebank" wäert muer stattfannen, also hu mir eng traditionell oppe Cours ofgehalen, vun där Dir kënnt kucken hei. Dës Kéier hu mir iwwer déi populär MongoDB Datebank geschwat: mir hunn e puer vun de Subtletien studéiert, d'Basis vun der Operatioun, d'Fäegkeeten an d'Architektur gekuckt. Mir hunn och e puer User Cases beréiert.

Open Webinar "MongoDB Basics"

De Webinar gouf ofgehalen Ivan Belt, Chef vun der Serverentwécklung bei Citymobil.

MongoDB Features

MongoDB ass eng Open Source dokumentorientéiert DBMS déi keng Beschreiwung vum Tabellschema erfuerdert. Et ass klasséiert als NoSQL a benotzt BSON (binär JSON). Skalierbar aus der Këscht, geschriwwen an C ++ an ënnerstëtzt JavaScript Syntax. Et gëtt keng SQL Ënnerstëtzung.

MongoDB huet Treiber fir vill populär Programméierungssproochen (C, C++, C#, Go, Java, JavaScript, Perl, PHP, Python, Ruby, etc.). Et ginn och inoffiziell a Gemeinschaft-ënnerstëtzt Treiber fir aner Programméierungssproochen.

Gutt, loosst eis d'Basisbefehle kucken, déi nëtzlech kënne sinn.

Also, fir MongoDB am Docker z'installéierenschreiwen:

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

Sou geschitt et Client starten MongoDB:

Open Webinar "MongoDB Basics"

Loosst eis elo déi traditionell schreiwen Moien World:

print (“Hello world!”)

Open Webinar "MongoDB Basics"

Nodeems datt - loosst eis den Zyklus ufänken:

Open Webinar "MongoDB Basics"

Wéi Dir gemierkt, virun eis regelméisseg JS, an MongoDB ass e vollwäertege JavaScript Dolmetscher.

Wéini benotzt Dir MongoDB?

Et gëtt eng Geschicht datt den duerchschnëttleche Startup am Silicon Valley déi Persoun ass déi d'Buch "HTML for Dummies" virun enger Woch opgemaach huet. Wat Stack wäert hien wielen? Averstanen datt et him ganz bequem ass wann hien aus offensichtleche Grënn JavaScript a sengem Browser huet, Node.js leeft um Server, a JavaScript leeft och an der Datebank. Dëst ass Punkt Nummer 1.

Zweetens gëtt et super Leeschtung Peter Zaitsev, ee vun de beschten Datebank Spezialisten a Russland. An et schwätzt de Peter iwwer MySQL a MongoDB, besonnesch Opmierksamkeet op wéini a wat am Beschten ass ze benotzen.

Drëttens wëll ech ënnersträichen datt MongoDB sech duerch gutt charakteriséiert Skalierbarkeet - an dëst ass ee vun de Schlëssel Feature vun der Datebank. Wann Dir net am Viraus wësst wat d'Laascht wäert sinn, ass MongoDB perfekt. Zousätzlech ënnerstëtzt et Out-of-the-Box Mustere wéi z schaarf и Replikatioun, an all dat ass ganz transparent gemaach, dat ass, et ass ganz bequem ze schaffen.

Wat et ass Terminologie an MongoDB dann:

  • Datenbanken sinn Datenbanken (Schemaen, Sammlungen vun Dëscher);
  • am MongoDB gëtt et sou eppes wéi eng Kollektioun - dëst ass en Analog vun engem Dësch an eng Rei vun Dokumenter, déi logesch verbonne solle sinn;
  • Dokumenter sinn analog zu enger String.

Datebank Kreatioun an einfach Ufroen

Fir eng Datebank ze kreéieren, musst Dir just ufänken se ze benotzen:

use learn

Open Webinar "MongoDB Basics"

Loosst eis elo e klengen Insert vum Dokument maachen. Loosst et sinn, zum Beispill, en Eenhoorn mam Numm Aurora:

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

db - e globale Objet fir Zougang zu der Datebank, dat ass, tatsächlech, der "monga" selwer. Benotzt fir Schnëtt sh, fir Replikatioun - rs.

Wéi eng Kommandoen huet den Objet? db:

Open Webinar "MongoDB Basics"

Also, loosst eis zréck op eise Kommando, als Resultat vun deem d'Konsole bericht datt eng Zeil agefouert gouf:

Open Webinar "MongoDB Basics"

D 'Wuert unicorns an engem Team db.unicorns.insert({name: 'Aurora', gender: 'f', weight: 450}) bezeechent eng Sammlung. Notéiert w.e.g. hei datt mir d'Kollektioun net beschriwwen oder erstallt hunn, awer einfach "Eenhornen" geschriwwen hunn, en Insert gemaach hunn, a mir haten eng Sammlung.

An esou kënne mir kréien all eis Kollektiounen:

db.getCollectionNames()

A sou weider. Kann eng aner setzen Sammlung:

Open Webinar "MongoDB Basics"

Elo froe mer komplett Kollektioun (Mir erënneren Iech drun datt an eisem Fall d'Datebank schonn Informatioun iwwer zwee Eenharen mam selwechten Numm enthält):

db.unicorns.find()

Notéiert w.e.g., hei ass eisen JSON (et gëtt en Numm, Geschlecht, Gewiicht, e puer eenzegaartegen Objektidentifizéierer):

Open Webinar "MongoDB Basics"

Loosst eis e puer méi Eenhoorn mat de selwechten Nimm setzen:

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

A loosst eis kucken wat geschitt ass:

Open Webinar "MongoDB Basics"

Wéi Dir gesitt, hu mir zousätzlech Felder: doheem и Wuerm, déi Aurora net huet.

Loosst eis e puer méi Unicorns derbäi:

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

Also hu mir véier méi Objekter mat JavaScript agefouert:

Open Webinar "MongoDB Basics"

Ärer Meenung no, a wéi enge Datenbanken ass et méi bequem fir Passdaten ze späicheren: relational Datenbanken oder Mongo?

D'Äntwert ass offensichtlech - a Monga, an dat uewe Beispill weist dat gutt. Et ass kee Geheimnis datt KLADR an der russescher Federatioun e Péng ass. A Monga passt ganz gutt mat Adressen, well Dir kënnt alles als Array setzen, an d'Liewen wäert vill méi einfach sinn. An et ass eng gutt Benotzer Case fir MongoDB.

Loosst eis méi Unicorns derbäi:

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

Open Webinar "MongoDB Basics"

Elo oppassen op d'Dokumenter. Wéi Trommel Mir späicheren ganz Objeten. Et gëtt och Informatioun iwwer wat en Eenhoorn gär huet, an net jiddereen huet dës Informatioun. Also bannen läit voller Array.

Iwwregens, fir d'Resultater méi schéin ze weisen, kënnt Dir d'Method um Enn vum Sichbefehl nennen .pretty():

Open Webinar "MongoDB Basics"

Wann Dir braucht ze kréien Informatiounen iwwert déi lescht Feeler, benotzt de folgende Kommando:

db.getLastError()

Dëst kann no all Insertion gemaach ginn, oder Dir kënnt Schreiwen Suergen konfiguréieren. Et ass besser doriwwer ze liesen an offiziell Dokumentatioun, déi iwwregens ganz informativ a Monga ass. Et gëtt iwwregens och op Habré gudden Artikel iwwer dëst.

Loosst eis op méi komplex Ufroen weidergoen

Ufro fir genaue Feldwäert:

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

Andeems Dir esou eng Ufro schreift, kréie mir eng Lëscht vun all männlechen Eenhoorn an der Konsoloutput.

Dir kënnt och maachen Ufro op e puer Felder gläichzäiteg: no Geschlecht a Gewiicht:

Open Webinar "MongoDB Basics"

Uewen, oppassen op d'Spezial $gt selector, wat Iech erlaabt all männlech Eenhoorn mat méi wéi 700 ze raschten.

Dir kënnt kontrolléieren existéiert den Terrain iwwerhaapt?:

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

Oder sou:

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

Dat nächst Team bréngt d'Eenharen eraus, deenen hir Nimm mat de Buschtawen A oder a fänken:

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

Betruecht elo Array Sich. Fro #1: Wat wäert dëse Kommando erausginn:

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

Dat ass richteg: jiddereen deen Äppel gär huet.

De folgende Kommando wäert nëmmen déi Eenhoorn Daten zréckginn, déi enthalen nëmmen Äppel a Waassermelonen:

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

An nach ee Kommando:

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

An eisem Fall gëtt et näischt zréck, well wa mir en Array passéieren, gëtt dat éischt Element mam Éischte verglach, dat zweet mat deem zweeten, etc. Dat heescht, d'Array muss och passen. no Positioun dës Wäerter.

An esou gesäit et aus Sich duerch eng Array mam "OR" Bedreiwer:

Open Webinar "MongoDB Basics"

Déi folgend Beispill wäert eis weisen Sich mat $all Bedreiwer. An hei ass d'Sequenz onwichteg:

Open Webinar "MongoDB Basics"

Och kënne mir Sich no Array Gréisst:

Open Webinar "MongoDB Basics"

Awer wat wa mir en Array wëllen fannen, deem seng Gréisst méi grouss ass wéi een? Et gëtt en Bedreiwer fir dëst $wou, mat deenen Dir méi komplex Saachen schreiwen kann:

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

Iwwregens, wann Dir wëllt üben, do bass du Datei mat Kommandoen.

Cursor Features

Loosst eis e bëssen ofwäichen a soen e puer Wierder iwwer d'Features vu Monga:

  • fannen() an aner Operatiounen ginn net Daten zréck - si ginn e sougenannte "Cursor" zréck;
  • d'Tatsaach, datt mir d'Donnéeën gedréckt gesinn, ass d'Aarbecht vum Dolmetscher.

Tippen db.unicorns.find ouni Klammern kréie mir d'Prompt:

Open Webinar "MongoDB Basics"

Mir weider Ufroen ze erfëllen

Et gëtt och den $in Bedreiwer:

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

Open Webinar "MongoDB Basics"

Loosst eis elo iwwer Update schwätzen. Zum Beispill, loosst eis d'Gewiicht vum Rooooodles Eenhoorn änneren:

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

Als Resultat vun eisen Aktiounen, d'Dokument wäert komplett aktualiséiert ginn, an nëmmen ee spezifizéierte Feld bleift dran:

Open Webinar "MongoDB Basics"

Dat ass, dat eenzegt wat fir eisen Objet bleift ass d'Gewiicht 2222 an, natierlech, ID.

Dir kënnt d'Situatioun korrigéieren mat $setze:

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

Open Webinar "MongoDB Basics"

Et gëtt och eng Méiglechkeet erhéijen Wäerter:

Open Webinar "MongoDB Basics"

An et gëtt och opstinn - Kombinatioun vun Update an Insert:

Open Webinar "MongoDB Basics"

Hei ass wéi et gemaach gëtt Feld Auswiel:

Open Webinar "MongoDB Basics"

Open Webinar "MongoDB Basics"

Et bleift fir e puer Wierder ze addéieren skip и limitéiert:

Open Webinar "MongoDB Basics"

Kollegen, dat ass alles, wann Dir d'Detailer wësse wëllt, kuckt de ganze Video. An vergiesst net Är Kommentaren ze hannerloossen!

Source: will.com

Setzt e Commentaire