Diferència entre revisions de la pàgina «MongoDB»
Salta a la navegació
Salta a la cerca
(→CRUD) |
|||
Línia 1: | Línia 1: | ||
− | == | + | == Intro No-SQL == |
+ | Algunes característiques: | ||
+ | * Treballem amb documents. | ||
+ | * Ens deixa de preocupar la inconsistència de dades. | ||
+ | * Dades relatives al document incrustades en el mateix (exemple de blog amb post+comment). Això ajuda a mantenir certa consistència. | ||
+ | * No té FKs. En canvi té operacions atòmiques. | ||
+ | * No té transaccions (consistència temporal). Alternatives: | ||
+ | ** Reestructurar la nosta BBDD per treballar en un sol tipus de document (schema). | ||
+ | ** Implementar-la en el nostre software. | ||
+ | ** Tolerar certa inconsistència temporal (dependrà del tipus d'aplicació). | ||
+ | <br> | ||
+ | |||
+ | == Primeres passes == | ||
*Instal·lar darrera versió (2.4.8) a Ubuntu: | *Instal·lar darrera versió (2.4.8) a Ubuntu: | ||
*: http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/ | *: http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/ | ||
Línia 9: | Línia 21: | ||
* Mongo shell permet JavaScript. Creem una col·lecció de dades: | * Mongo shell permet JavaScript. Creem una col·lecció de dades: | ||
*: > for (i=0;i<1000;i++) { names=["examen","treball","questionari"]; for(j=0;j<3;j++) {db.notes.insert( {"estudiant":i,"tipus": names[j], nota : Math.round(Math.random()*100) }); }} | *: > for (i=0;i<1000;i++) { names=["examen","treball","questionari"]; for(j=0;j<3;j++) {db.notes.insert( {"estudiant":i,"tipus": names[j], nota : Math.round(Math.random()*100) }); }} | ||
− | |||
− | |||
− | |||
*Exemple amb dades: | *Exemple amb dades: | ||
*: https://education.mongodb.com/static/10gen_2013_M101P_November/handouts/grades.ef42a2b3e7ff.js | *: https://education.mongodb.com/static/10gen_2013_M101P_November/handouts/grades.ef42a2b3e7ff.js | ||
* Importar-lo:<pre>$ mongoimport -d students -c grades < grades.ef42a2b3e7ff.js</pre> | * Importar-lo:<pre>$ mongoimport -d students -c grades < grades.ef42a2b3e7ff.js</pre> | ||
− | * | + | *... |
== CRUD == | == CRUD == |
Revisió del 21:20, 10 des 2013
Contingut
Intro No-SQL
Algunes característiques:
- Treballem amb documents.
- Ens deixa de preocupar la inconsistència de dades.
- Dades relatives al document incrustades en el mateix (exemple de blog amb post+comment). Això ajuda a mantenir certa consistència.
- No té FKs. En canvi té operacions atòmiques.
- No té transaccions (consistència temporal). Alternatives:
- Reestructurar la nosta BBDD per treballar en un sol tipus de document (schema).
- Implementar-la en el nostre software.
- Tolerar certa inconsistència temporal (dependrà del tipus d'aplicació).
Primeres passes
- Instal·lar darrera versió (2.4.8) a Ubuntu:
- Monogo shell:
$ mongo
- Seleccionar una db (o crear):
> use <nom_db>
- Mongo shell permet JavaScript. Creem una col·lecció de dades:
- > for (i=0;i<1000;i++) { names=["examen","treball","questionari"]; for(j=0;j<3;j++) {db.notes.insert( {"estudiant":i,"tipus": names[j], nota : Math.round(Math.random()*100) }); }}
- Exemple amb dades:
- Importar-lo:
$ mongoimport -d students -c grades < grades.ef42a2b3e7ff.js
- ...
CRUD
Create Read Update Delete
http://docs.mongodb.org/manual/reference/crud/
Create / Insert / Save
Per crear documents dins d'una col·lecció:
> db.<coleccio>.save( <JSON_obj> )
Read / Select / Find
La operació de query més estàndard en MongoDB és FIND. Alguns exemples:
> db.<coleccio>.findOne() > db.<coleccio>.findOne( {"tipus":"examen"} ) > db.<coleccio>.find() > db.<coleccio>.find( {estudiant:103} )
Si ho volem veure una mica més ben formatat:
> db.<col>.find().pretty()
El 2n argument és per seleccionar camps (i excloure):
> db.<col>.find( {"tipus":"examen",nota:50}, {"estudiant":true,"_id":false} )
Operadors: estudiants amb examens amb notes > 90
> db.<col>.find( {"tipus":"examen", nota: {$gt:90} }, {"estudiant":true,"_id":false} )
Estudiants amb notes entre 65 i 71: db.grades.find( {"type":"exam",score: {$gte:65,$lte:71}} ).sort({"score":1})
Altres operadors: http://docs.mongodb.org/manual/reference/operator/query/
TODO: Unir dues queries amb $or...
Ordenar resultats (sort): http://docs.mongodb.org/manual/reference/method/cursor.sort/
Exercicis
...