Consultes b脿siques
Llic猫ncia: CC BY-NC-SA 4.0
(Reconeixement - NoComercial - CompartirIgual) 馃叚
Introducci贸
MongoDB proprociona una sintaxi per realitzar consultes flexible i potent, per貌 diferent de la que proporciona el llenguatge SQL.
Consultes b脿siques
Totes les consultes a MongoDB es realitzen mitjan莽ant la crida a la funci贸 find sobre una col路lecci贸.
Aquesta funci贸 retorna els 20 primers documents de la col路lecci贸.
Si volem veure els seg眉ents 20 documents, podem utilitzar la funci贸 it:
Exemple
Consultem tots els documents de la col路lecci贸 llibres:
Filtrar documents
Podem filtrar els documents que retorna la consulta afegint un objecte
amb els criteris com a par脿metre de la funci贸 find:
db.collection.find({ camp: valor })
Exemple
Consultem els llibres de l'autor Irene Sol脿:
db.llibres.find({ autor: 'Irene Sol脿' })
Operadors de comparaci贸
Podem utilitzar els seg眉ents operadors de comparaci贸 per filtrar els documents:
$eq: igual que (equals). Aquest 茅s l'operador per defecte.
$ne: diferent de (not equals).
$gt: m茅s gran que (greater than).
$gte: m茅s gran o igual que (greater than or equals).
$lt: m茅s xicotet que (less than).
$lte: m茅s xicoteT o igual que (less than or equals).
$eq
La consulta anterior 茅s equivalent a:
db.llibres.find({ autor: { $eq: 'Irene Sol脿' } })
$gt
Consultem els llibres amb m茅s de 200 p脿gines:
db.llibres.find({ nombre_pagines: { $gt: 200 } })
M煤ltiples criteris
Podem afegir m煤ltiples criteris de filtrat a la consulta, que s'han de complir tots:
db.collection.find({ camp1: valor1, camp2: valor2 })
Exemple
Consultem els llibres de l'autora Sara Mesa amb m茅s de 200 p脿gines:
db.llibres.find({ autor: 'Sara Mesa', nombre_pagines: { $gt: 200 } })
Operadors l貌gics
Podem utilitzar els seg眉ents operadors l貌gics per combinar criteris de filtrat:
$and
Consultem els llibres de l'autora Sara Mesa amb menys de 200 p脿gines:
db.llibres.find({
$and: [
{ autor: 'Sara Mesa' },
{ nombre_pagines: { $lt: 200 } }
]
})
$not
Consultem els llibres que no s贸n de l'autora Sara Mesa:
db.llibres.find({ autor: { $not: { $eq: 'Sara Mesa' } } })
Operadors amb strings
MongoDB supporta expressions regulars per filtrar strings:
db.collection.find({ camp: /expressi贸/ })
db.collection.find({ camp: { $regex: 'expressi贸' } })
Exemple
Consultem els llibres que contenen la paraula 'fam铆lia' al resum:
db.llibres.find({ resum: /fam铆lia/ })
Operadors amb arrays
Podem utilitzar els seg眉ents operadors per filtrar arrays:
$in: cont茅 algun dels elements (in).
$nin: no cont茅 cap dels elements (not in).
$all: cont茅 tots els elements (all).
$size: t茅 la mida (size).
$elemMatch: cont茅 algun element que compleixi els criteris (element match).
$in
Consultem els llibres que s贸n del g猫nere novel路la o poesia:
db.llibres.find({ genere: { $in: ['novel路la', 'poesia'] } })
$all
Consultem els llibres que s贸n dels g猫neres ci猫ncia-ficci贸 i b猫l路lic:
db.llibres.find({ genere: { $all: ['ci猫ncia-ficci贸', 'b猫l路lic'] } })
$elemMatch
Consultem els llibres que tenen un g猫nere que cont茅 la paraula ficci贸:
db.llibres.find({ genere: { $elemMatch: { $regex: 'ficci贸' } } })
Operadors amb dates
Podem utilitzar els seg眉ents operadors per filtrar dates:
- Operadors de comparaci贸:
$gt, $gte, $lt, $lte.
- Operadors de temps:
$year, $month, $dayOfMonth, $dayOfWeek.
$gte i $lte
Consultem els llibres publicats entre les dates 2022-06-01 i 2022-12-31:
db.llibres.find({ data_publicacio: { $gte: new Date('2022-06-01'), $lte: new Date('2022-12-31') } })
Ordenaci贸
Podem ordenar els documents d'una consulta amb la funci贸 sort:
db.collection.find().sort({ camp: 1 })
El valor de l'objecte passat a la funci贸 sort 茅s:
1: ordenaci贸 ascendent (ascendent).
-1: ordenaci贸 descendent (descendent).
Es poden ordenar per m煤ltiples camps afegint-los a l'objecte:
db.collection.find().sort({ camp1: 1, camp2: -1 })
Exemple
Consultem els llibres ordenats per data de publicaci贸 de forma descendent:
db.llibres.find().sort({ data_publicacio: -1 })
Selecci贸 de camps
La funci贸 find accepta un segon par脿metre per seleccionar els camps que volem mostrar:
db.collection.find({}, { camp1: 1, camp2: 1 })
Els valors per seleccionar els camps s贸n:
1: incloure el camp (include).
0: excloure el camp (exclude).
El comportament 茅s el seg眉ent:
- Si no s'especifica aquest camp, es mostraran tots els camps dels documents.
- Si s'especifica aquest camp, per defecte sols es mostraran els camps
_id i els que s'especifiquen amb el valor 1.
Exemple
Consultem els t铆tols dels llibres de l'autora Sara Mesa sense incloure l'identificador:
db.llibres.find({ autor: 'Sara Mesa' }, { _id: 0, titol: 1 })
[ { titol: 'La familia' }, { titol: 'Un amor' } ]
馃搶 Aquest document pot quedar desactualitzat despr茅s d鈥檌mprimir-lo. Pots consultar la versi贸 m茅s recent
a la p脿gina web.
馃尶 Abans d鈥檌mprimir aquest document, considera si 茅s realment necessari. Redueix el consum de paper i ajuda a protegir el nostre entorn.