Consultas agregadas

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.

Publicado por

Juan Pablo Fuentes

Formador de programación y bases de datos