Noțiuni de bază cu MongoDB - Partea 1

Gata să intre și să înceapă să învețe despre MongoDB, una dintre cele mai bune tehnologii pentru dezvoltatorii web?

În această serie nouă, veți merge de la începător la pro și veți putea folosi Mongo la fel de ușor ca MySQL în aplicațiile dvs. web. Dar, mai întâi, să ne uităm la elementele de bază.


De ce MongoDB?

Ce ar fi dacă ați putea stoca modelele programate aproape exact așa cum le-ați modelat?

În dezvoltarea orientată pe obiecte, suntem încurajați să abordăm dezvoltarea codurilor prin modele logice, astfel încât să putem să o conceptualizăm mult mai ușor în mintea noastră. Când facem acest lucru, suntem mai în măsură să discernem operațiile logice utilizate pentru a interacționa cu acesta și informațiile pe care le-ar conține în momente diferite.

Ce ar fi dacă ați putea stoca modelele programate aproape exact așa cum le-ați modelat? Ce se întâmplă dacă le puteți stoca așa cum sunt ele în loc de o serie de rânduri în tabele? Învățând despre MongoDB, vei reuși să faci asta!

În această serie, vom învăța totul de la principiile de bază ale MongoDb, cum ar fi crearea, actualizarea și ștergerea bazelor de date și a înregistrărilor, pentru a putea efectua căutări complexe pentru date și mineri de date elementare cu MapReduce. Deci, fără prea multe idei - să începem!

Notă: Acest tutorial se face din perspectiva sistemului bazat pe NIX a la Mac OSX, Linux BSD și așa mai departe. Dar ar trebui să puteți urmări dacă executați Windows destul de bine, deoarece există platforme pentru majoritatea platformelor.


Pasul 1: Instalarea Mongo

Ok, deci iată că începe distracția. Vom începe prin instalarea lui Mongo. Accesați site-ul web MongoDb și faceți clic pe link-ul de descărcări.

Acest lucru vă va aduce la o pagină în care puteți apuca o construcție pentru platforma și arhitectura dvs..

Acest tutorial acoperă doar versiunile stabile, deci vă rugăm să nu luați o construcție de noapte. După ce este descărcat, instalați-l conform cerințelor platformei dvs..

Dacă vă aflați pe o mașină Nix, atunci utilizați managerul de pachete pentru a instala cea mai recentă versiune pentru platforma dvs..

Cu asta din drum, trageți un terminal și introduceți-l Mongo. Asta va deschide coaja Mongo și să ne lăsăm în drum. Toate fiind bine, veți vedea o ieșire similară celei de mai jos:

Dacă vezi asta, atunci ești gata să pleci.


Pasul 2: Crearea unei baze de date / introducerea de înregistrări

Inițial, nu este creată nicio bază de date. Dar nu vă faceți griji, vor fi create instantaneu când vom începe să inserăm înregistrările noastre, pe care o vom face chiar acum. Copiați conținutul de mai jos și inserați-l în dvs. Mongo coajă

db.nettuts.insert (prima: 'matthew', ultima: 'setter', dob: '21 / 04/1978 ', sex:' m ', hair_colour:' brown ', ocupație:' developer ', nationality: australian); db.nettuts.insert (prima: 'james', ultima: 'caan', dob: '26 / 03/1940 ', sex:' m ', hair_colour:' brown ', ocupație: american "); db.nettuts.insert (primul: 'arnold', ultima: 'schwarzenegger', dob: '03 / 06/1925 ', gen:' m ', hair_colour:' brown ', occupation: american "); db.nettuts.insert (primul: 'tony', ultimul: 'curtis', dob: '21 / 04/1978 ', sex:' m ', păr_colour: american "); db.nettuts.insert (prima: 'jamie lee', ultimul: 'curtis', dob: '22 / 11/1958 ', sex:' f ', părul_colour: 'american'); db.nettuts.insert (primul: 'michael', ultima: 'caine', dob: '14 / 03/1933 ', sex:' m ', hair_colour:' brown ', occupation: Engleză' ); db.nettuts.insert (prima: 'judi', ultima: 'dench', dob: '09 / 12/1934 ', sex:' f ', hair_colour:' white ', ocupație: Engleză' );

Toate bune? Excelent! Pentru a confirma că baza de date și înregistrările însoțitoare au fost create, tastați următoarea comandă:

db.nettuts.find ()

Dacă totul a fost planificat, atunci veți vedea următoarea ieșire:

Aceasta arată că toate înregistrările au fost create în baza de date. Un lucru de remarcat înainte de a merge mai departe este id camp. Aceasta este generată automat de Mongo pentru dvs., dacă nu specificați un id. Motivul este că fiecare înregistrare trebuie să aibă un caracter unic id camp.

Puteți vedea că avem o singură înregistrare pentru fiecare dintre cele pe care le inserăm - acum suntem gata să începem să le interogăm.


Pasul 3: Căutarea de înregistrări

Îți amintești comanda anterioară? Acesta a preluat și a afișat fiecare înregistrare din baza de date. Utile, da, dar cum ești mai specific? Cum descoperiți toți actorii de sex feminin, care filtrează bărbații? Aceasta este o întrebare bună și răspunsul este selectori.

selectori

Selectorii sunt pentru Mongo ce Unde clauzele sunt la SQL. Ca și în cazul în care clauzele, selectorii Mongo ne permit să facem următoarele:

  • specificați criteriile pe care le utilizați TREBUIE SA Meci. adică o ȘI clauză
  • specificați criteriile pe care le utilizați POATE SA opțional se potrivesc. adică o SAU clauză
  • specificați criteriile pe care le utilizați TREBUIE SA exista
  • și mult mai mult…

Înregistrări care trebuie să se potrivească

Să începem cu un selector de bază. Spuneți că vrem să găsim toți actorii care sunt femei
. Pentru a realiza acest lucru, va trebui să executați următoarea comandă:

db.nettuts.find (sex: 'f');

Aici am precizat că genul trebuie să fie egal "f".

Rularea comenzii va reveni la următoarea ieșire:

Dacă am vrea să căutăm actori de sex masculin? Rulați următoarea comandă:

db.nettuts.find (sex: 'm');

Vom obține următoarele rezultate:

Căutarea cu mai multe criterii

Să mergem mai departe. Vom căuta actori de sex masculin care sunt englezi.

db.nettuts.find (sex: 'm', $ sau: [naționalitate: 'engleză']);

Rularea care va returna următoarele rezultate:

Dar actorii de sex masculin care sunt englezi sau americani. Uşor! Să ne ajustăm comanda anterioară pentru a include americanii:

db.nettuts.find (sex: 'm', $ sau: [naționalitate: 'engleză', naționalitate: 'american']);

Pentru această interogare, vom vedea următoarele rezultate:


Pasul 4: Înregistrări de sortare

Ce se întâmplă dacă vrem să ordonăm înregistrări, să spunem după prenume sau naționalitate? Similar cu SQL, Mongo furnizează fel comanda. Comanda, cum ar fi găsi comanda ia o listă de opțiuni pentru a determina ordinea de sortare.

Spre deosebire de SQL, cu toate acestea, specificăm ascendent și descrescător diferit. Facem acest lucru după cum urmează:

  • Crescător: -1
  • Descendent: 1

Să aruncăm o privire la un exemplu:

db.nettuts.find (gender: 'm', $ sau: [naționalitate: 'engleză', naționalitate: 'american']). sort (naționalitate: -1);

Acest exemplu preia toți actorii de sex masculin, englez sau american și le sortează în ordinea descrescătoare a naționalității.

Cum rămâne cu sortarea după naționalitate în ordine descendentă și nume în ordine crescătoare? Nici o problema! Aruncati o privire la interogarea de mai jos, care este o versiune modificata a ultimei pe care am fugit-o.

db.nettuts.find (sex: 'm', $ sau: [naționalitate: 'engleză', naționalitate: 'american']). sortează (naționalitate: -1, primul: 1);

De data aceasta obținem următoarele rezultate et:

Puteți vedea că de data aceasta Arnold Schwarzenegger este plasat în fața lui Tony Curtis.


Pasul 5: Limitarea înregistrărilor

Dacă am avea un set de date destul de mare (norocos, nu avem) și am vrut să limităm rezultatele doar la 2? Mongo oferă comanda limită, similară cu MySQL și ne permite să facem asta. Să ne actualizăm interogarea anterioară și să revenim la doar 2 înregistrări. Priviți următoarea comandă:

db.nettuts.find (sex: 'm', $ sau: [naționalitate: 'engleză', naționalitate: 'american']).

Din această comandă obținem următoarele rezultate:

Dacă am vrut să înregistrăm a treia și a patra înregistrare, adică să sărim peste primele două? Încă o dată, Mongo are o funcție pentru asta. Aruncați o privire la personalizarea ulterioară a comenzii anterioare:

db.nettuts.find (gender: 'm', $ sau: [naționalitate: 'engleză', naționalitate: 'american']) limit (2) .skip (2);

Rularea care va returna următoarele rezultate:

Puteți vedea din setul de rezultate inițiale că primele două au fost sărite.


Pasul 6: Actualizarea înregistrărilor

După cum era de așteptat, Mongo oferă o opțiune de actualizare a înregistrărilor. Ca și în cazul găsi metoda și interogările SQL, trebuie să specificați criteriile pentru înregistrarea pe care doriți să o modificați, apoi datele din acea înregistrare care urmează să fie modificate.

Să spunem că trebuie să actualizăm înregistrarea pentru James Caan, specificând că părul lui este gri, nu maro. Ei bine, pentru asta executam funcția de actualizare. Aruncați o privire la exemplul de mai jos:

db.nettuts.update (primul: 'james', ultima: 'caan', $ set: păr_color: 'maro');

Acum, atunci când executați asta, dacă totul a mers bine, nu va exista nimic care să indice dacă a fost un succes sau un eșec. Pentru a afla dacă înregistrarea a fost actualizată corect, trebuie să o căutăm. Deci, să facem asta.

db.nettuts.find (primul: 'james', ultimul: 'caan');

După aceasta, veți vedea următorul rezultat:

Acest lucru arată că actualizarea a funcționat. Un cuvânt de precauție, deși, dacă nu treceți în $ set modificator, atunci veți face înlocuiți înregistrarea, dacă este disponibil, în loc de actualizarea acestuia. Ai grija!


Pasul 7: Ștergerea înregistrărilor

Cred că în această etapă ați început să obțineți ideea de a lucra cu Mongo. Așadar, dacă doriți să ștergeți o înregistrare, trebuie să treceți într-un set de selectori, așa cum ați proceda și cu SQL, pentru a determina setul de înregistrări pe care doriți să le ștergeți. Dacă nu faceți acest lucru, veți șterge toate înregistrările - și baza de date.

Deci, să spunem că nu vrem James Caan în lista noastră de actori. Să-l eliminăm din baza de date folosind următoarea comandă:

db.nettuts.remove (prima: 'james', ultima: 'caan');

Ca și în cazul actualizării, nu este furnizată nici o ieșire vizibilă care să indice dacă am reușit sau nu - să facem o căutare pentru a verifica dublu.

db.nettuts.find (primul: 'james', ultimul: 'caan');

După aceasta, nu ar trebui să vedeți niciun rezultat returnat. Dacă asta ați găsit, am șters cu succes James Caan din baza noastră de date. Dar dacă dorim să ștergem toate înregistrările din baza de date?

Pentru a face acest lucru, scoateți selectorii din apelul precedent pentru a le elimina, după cum se arată mai jos.

db.nettuts.remove (); db.nettuts.find ();

După ce am executat ambele comenzi de mai sus, nu vom vedea nicio ieșire, indicând faptul că baza de date, cu toate înregistrările, a fost eliminată.


Concluzie

În această introducere rapidă la utilizarea MongoDB ne-am uitat la:

  • Ce este Mongo
  • Cum se instalează
  • Cum puteți crea, găsi, actualiza și șterge înregistrări

Cu aceste cunoștințe, puteți merge, exersa și afla mai multe despre această minunată tehnologie. Dacă doriți mai multe informații, nu ezitați să vizitați site-ul MongoDb sau să urmați @mongodb pe Twitter.

În tutorialul următor, vom începe să învățăm mai multe despre întrebări complexe. Stați așa și vă mulțumesc mult pentru citire.

Actualizați: A doua parte a acestei serii a fost postată și poate fi găsită aici.

Cod