M101JS: MongoDB for Node.js Developers

Baietii de la MongoDB in colaborare cu edX pun la dispozitie niste cursuri gratuite pe care eu le recomand cu mare caldura. Eu am facut M101P (varianta cu Python a cursului pentru developers), si am fost foarte placut impresionat de cat de bine e explicat.

Vad ca cel mai curand incepe cel pentru Java, pe 5 Aug, iar apoi cel pentru Node.JS, pe 12 Aug, dar poti incepe linistit cu oricare din ele, indiferent daca folosesti Java sau Node sau nu, pentru ca accentul este pus pe Mongo, iar pentru partea de Java/Python/etc ti se da codul de-a gata daca vrei sa nu iti bati capul sa il scrii tu. Majoritatea muncii o vei face in consola de mongo oricum.

4 Likes

În cazul în care cineva este interesat dar nu s-a abonat, cursul de Mongo/Node a început aici.

3 Likes

Ooo, suntem colegi? :))

1 Like

Dacă prin „coleg” înțelegi „cineva care se chinuie de ~șase ore să vadă zece clipuri de câte 5 minute”, atunci da, suntem colegi :smiley:

Dacă tot suntem mai mulți care urmează acest curs, propun să-l discutăm :smile:


Prima chestie ce m-a derutat un pic este structura propusă pentru blog (sunt la prima săptămână, probabil voi fi lămurit pe parcurs):

{
  "title": "foo",
  "body" : "...",
  "comments" : {},
  "tags" : [ "foo", "bar" ]
}

După calculele mele, „coloana” tags va încălca flagrant principiul DRY după nu foarte mult timp. Idem pentru categorii (dacă e cazul). Singurul avantaj în acest moment ar fi integrarea comentariilor în obiectul post-ului, nu într-o „tabelă” separată.

Eh, e simplificat pentru curs. In real life ai tine o colectie de ObjectIds in locul tag-urilor efective.

1 Like

@victorstanciu: adică se face o relație între colecții? :smiley:

Din punctul de vedere al lui Mongo, nu, e doar un array cu items de tip ObjectId, care e doar un data type ca oricare altul. Mongo nu are notiunea de relatii intre colectii, si cum nu are nici join-uri, te priveste daca vrei sa implementezi vreun soi de relatie conceptuala.

Poate nu are noțiunea de primary key și foreign key pentru că și mie singurul mod de a nu încălca principiul DRY, este să relaționezi obiectele. Oricum, în acest moment nu înțeleg de ce acest lucru este un pas înainte. Poate mai încolo.

1 Like

Nu prea inteleg ce vrei sa zici. Primary key are, pentru asta e _id:

MongoDB reserves the _id field in the top level of all documents as a primary key. _id must be unique, and always has an index with a unique constraint

Cand am zis ca nu are notiunea de relatii la foreign keys si joins ma refeream, impreuna. Pentru ca tine cont ca poti avea RDBMS cu joins dar fara foreign key constraints (vezy MyISAM). Acum, tu bineinteles ca vrei sa relationezi documentele intr-un fel, dar o faci la nivelul aplicatiei tale, DBMS-ul in cazul asta nu te asista in nici un fel in directia asta, asta am zis. Pe Mongo il doare la basca ce stochezi tu in documente, cum relationezi tu in aplicatia ta documentele, etc.

Oricum, în acest moment nu înțeleg de ce acest lucru este un pas înainte.

Nu imi dau seama daca imi e adresat tot mie. Daca da, eu nu am pretins ca ar fi un pas in vreo directie.

PS: pentru ca threadul asta e strict legat de M101JS, hai sa nu incepem si aici discutiile pro si contra NoSQL, Mongo, etc, shall we?

2 Likes

I moved 9 posts to a new topic: Hatereală MongoDB

Asa, daca mi se permite totusi sa discut si on-topic, am cateva tips pentru cei care s-au inscris la curs.

  1. Pentru aia care folosesc Sublime, eu mi-am facut un build tool pentru .js-uri, care ruleaza fisierul curent in node, si cu alternative shortcut pentru a-l rula cu mongo. Este foarte folositor pentru rulat script-urile pentru mongo putin mai avansate mai incolo in curs:
{
    "cmd": ["node", "$file"],
    "selector": "source.js",
    "variants": [
        {
            "cmd": ["mongo --norc < $file"],
            "name": "alt",
            "shell": true
        }
    ]
}

In felul asta cu CTRL+B rulez un .js cu node, iar cu CTRL+SHIFT+B cu mongo. Spre finalul cursului, cand temele devin din ce in ce mai complicate, e obositor sa tot rulezi in consola scripturile.

  1. By default, mongo incearca sa citeasca un fisier .mongorc.js din home, daca exista, in care ii pot fi configurate diverse chestii. Va recomand scriptul asta care vine cu cateva enhancements foarte nice pentru shell-ul de mongo: Mongo Hacker.
2 Likes

Pentru o posibila administrare a “blog-ului” cu siguranta trebuie puse intr-o alta colectie commenturile. Tag-urile de asemenea daca vrei sa faci tag clouds, cel putin asa mi se pare. Dar dupa cum spun si ei, pentru afisare le poti stoca la modul all in 1, in modul asta isi fac si reclama … 1 colectie in loc de 6 coloane in mysql :stuck_out_tongue:

De câteva zile au apărut videos pentru săptămâna asta.

Dacă prima serie a fost scurtă și am trecut rapid prin ea, astea sunt fără sfârșit și trag de marți să le văd. Și abia am reușit să vizionez jumătate!

I moved 7 posts to a new topic: Hatereală MongoDB2

I moved 2 posts to an existing topic: MongoDB Pro și Contra

Cred ca saptamana asta a avut cele mai multe video-uri din toata seria … pfeww.