Frënn, eng aner Course lancéiert
De Webinar gouf ofgehalen
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:
Loosst eis elo déi traditionell schreiwen Moien World:
print (“Hello world!”)
Nodeems datt - loosst eis den Zyklus ufänken:
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
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
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:
Also, loosst eis zréck op eise Kommando, als Resultat vun deem d'Konsole bericht datt eng Zeil agefouert gouf:
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:
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):
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:
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:
Ä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});
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()
:
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
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:
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:
Déi folgend Beispill wäert eis weisen Sich mat $all Bedreiwer. An hei ass d'Sequenz onwichteg:
Och kënne mir Sich no Array Gréisst:
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,
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:
Mir weider Ufroen ze erfëllen
Et gëtt och den $in Bedreiwer:
db.unicorns.find({weight: {$in: [650, 704]}})
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:
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}})
Et gëtt och eng Méiglechkeet erhéijen Wäerter:
An et gëtt och opstinn - Kombinatioun vun Update an Insert:
Hei ass wéi et gemaach gëtt Feld Auswiel:
Et bleift fir e puer Wierder ze addéieren skip и limitéiert:
Kollegen, dat ass alles, wann Dir d'Detailer wësse wëllt,
Source: will.com