Aquí tienes algunos ejemplos de consultas de agregación en MongoDB utilizando la colección de libros que has proporcionado:
1. Buscar libros por género y ordenar por fecha de publicación
db.libros.aggregate([
{ $match: { genero: "Novela" } },
{ $sort: { fecha_publicacion: 1 } }
])
2. Contar el número de libros por cada género
db.libros.aggregate([
{ $group: { _id: "$genero", total: { $sum: 1 } } },
{ $sort: { total: -1 } }
])
3. Encontrar el libro más antiguo y el más reciente
db.libros.aggregate([
{ $group: {
_id: null,
mas_antiguo: { $min: "$fecha_publicacion" },
mas_reciente: { $max: "$fecha_publicacion" }
} }
])
4. Calcular el número promedio de años desde la publicación de los libros hasta la fecha actual
db.libros.aggregate([
{ $project: {
titulo: 1,
años_desde_publicacion: { $subtract: [new Date(), "$fecha_publicacion"] }
} },
{ $group: {
_id: null,
promedio_años: { $avg: { $divide: ["$años_desde_publicacion", 1000 * 60 * 60 * 24 * 365] } }
} }
])
5. Encontrar libros publicados por una editorial específica y contar cuántos hay
db.libros.aggregate([
{ $match: { editorial: "Viking Press" } },
{ $count: "total_libros" }
])
6. Listar los libros publicados después de 1950 y ordenarlos por fecha de publicación en orden descendente
db.libros.aggregate([
{ $match: { fecha_publicacion: { $gt: new Date("1950-01-01") } } },
{ $sort: { fecha_publicacion: -1 } }
])
7. Agrupar los libros por autor y listar los títulos de los libros que han escrito
db.libros.aggregate([
{ $group: {
_id: "$autor",
libros: { $push: "$titulo" }
} }
])
8. Calcular la cantidad de libros publicados por década
db.libros.aggregate([
{ $project: {
decada: { $substr: [ { $year: "$fecha_publicacion" }, 0, 3 ] }
} },
{ $group: {
_id: { $concat: ["$_id", "0s"] },
total: { $sum: 1 }
} }
])
9. Filtrar libros que tienen la palabra “El” en el título
db.libros.aggregate([
{ $match: { titulo: { $regex: /El/, $options: "i" } } }
])
10. Contar libros por autor y ordenar los autores por el número de libros en orden descendente
db.libros.aggregate([
{ $group: {
_id: "$autor",
total_libros: { $sum: 1 }
} },
{ $sort: { total_libros: -1 } }
])
Estos ejemplos muestran cómo utilizar las funcionalidades de agregación de MongoDB para realizar consultas complejas y obtener información específica de la colección de libros.