2.6. Buscar documents
Primer comptarem quants documents té la col·lecció chr1 amb la instrucció
db.chr1.find().count();
Aquesta instrucció conté dues funcions. La funció find()
que és la funció que utilitzem per realitzar recerques en la col·lecció de documents. Seria la instrucció SELECT que hem vist a MySQL. Si no hi afegim paràmetres ens mostrarà tots els documents de la col·lecció, si hi afegim paràmetres, aquests seran els criteris de recerca o els filtres de la selecció. En aquest cas complementem la funció find()
amb la funció count()
per comptar els documents trobats. La funció count()
no requereix paràmetres, però cal escriure els parèntesis igualment.
En executar la instrucció db.chr1.find().count();
el sistema ens en retorna 3. La col·lecció chr1 té 3 documents.
Utilitzarem la instrucció db.chr1.find();
per veure tots els documents:
Per a cada document el sistema ens mostra el camp _id amb un valor generat aleatòriament per la funció del sistema ObjectId();
En el camp _id es guarda la clau primària del document. Aquesta clau primària és tan important per al sistema que si el document que inserim no té el camp _id el sistema el crea de forma automàtica. En els nostres exemples els tres documents inserits no tenen el camp _id i el sistema l’ha generat automàticament.
En un document hi pot haver molts camps i, tal com els mostra la funció find();
, queden poc llegibles. Perquè el document es pugui llegir millor, la funció find();
es pot complementar amb la funció pretty();
db.chr1.find().pretty();
Com podem observar, la funció pretty();
ens permet veure els valors de cada camp de cada document d’una forma molt més amigable.
Vegem ara alguns exemples d’utilització de la funció find()
amb alguns paràmetres per filtrar els resultats.
Mostrarem només els gens de la nostra col·lecció que es troben en la cadena +
:
db.chr1.find({"strand": "+"}).pretty();
El paràmetre de la funció és la condició de selecció de la recerca {"strand": "+"}
Si no volem mostrar algun camp, com per exemple el camp _id
, escrivim
db.chr1.find({"strand": "+"}, {"_id":0}).pretty();
Si volem mostrar un sol camp dels documents seleccionats, com per exemple el camp name, escrivim
db.chr1.find({"strand": "+"},{"name":1, "_id":0 }).pretty();
Les consultes amb la funció find()
poden ser molt més elaborades, usant diversos camps com a condició de recerca, o també usant operadors especials com major que, menor que, etc.
Exemples d’operadors especials:
$gt, $gte, $lt, $lte, $ne, $in, $nin, $mod, $regex/$options,
$all, $size, $exists, $type, $not, $or, $nor, $elemMatch
Exemple de selecció de documents en què el camp txStart sigui major que 11873:
db.chr1.find({"txStart": {"$gt" : 11873 }}).pretty();
O que compleixi dues condicions, que es trobin en la cadena + i que el camp txStart sigui major o igual a 11873.
db.chr1.find({"strand": "+", "txStart": {"$gte" : 11873 }}).pretty();