COMPARTE ESTE ARTÍCULO

En este artículo, te mostraré cómo realizar consultas y operaciones avanzadas en MongoDB (Shell) y cómo implementarlas en Java utilizando el controlador oficial de MongoDB. Estas operaciones incluyen consultas de texto, manejo de arrays y agregaciones.


1. Consultas con Filtros de Texto

Libros cuyo nombre comienza con “Acceso”

En MongoDB (Shell):
db.libros.find({ nombre: { $regex: "^Acceso" } }).pretty();
En Java:
import static com.mongodb.client.model.Filters.regex;

MongoCollection<Document> collection = database.getCollection("libros");

// Libros cuyo nombre comienza con "Acceso"
collection.find(regex("nombre", "^Acceso")).forEach(doc -> System.out.println(doc.toJson()));

Libros cuyo nombre contiene “de”

En MongoDB (Shell):
db.libros.find({ nombre: { $regex: "de" } }).pretty();
En Java:
// Libros cuyo nombre contiene "de"
collection.find(regex("nombre", "de")).forEach(doc -> System.out.println(doc.toJson()));

2. Operaciones con Arrays

Buscar libros que incluyan un tema específico (“UML”)

En MongoDB (Shell):
db.libros.find({ temas: "UML" }).pretty();
En Java:
import static com.mongodb.client.model.Filters.eq;

// Libros que incluyan el tema "UML"
collection.find(eq("temas", "UML")).forEach(doc -> System.out.println(doc.toJson()));

Buscar libros con temas en un orden exacto

En MongoDB (Shell):
db.libros.find({ temas: ["UML", "Subversión"] }).pretty();
En Java:
// Libros que contengan exactamente los temas en el orden dado
collection.find(eq("temas", List.of("UML", "Subversión"))).forEach(doc -> System.out.println(doc.toJson()));

Buscar libros que contengan todos los valores en un array ($all)

En MongoDB (Shell):
db.libros.find({ temas: { $all: ["UML", "Subversión"] } }).pretty();
En Java:
import static com.mongodb.client.model.Filters.all;

// Libros que contengan todos los temas "UML" y "Subversión"
collection.find(all("temas", List.of("UML", "Subversión"))).forEach(doc -> System.out.println(doc.toJson()));

Añadir un nuevo tema al array

En MongoDB (Shell):
db.libros.updateOne({ codigo: 1 }, { $push: { temas: "SQL" } });
En Java:
import static com.mongodb.client.model.Updates.push;

// Añadir "SQL" al array de temas del libro con código 1
collection.updateOne(eq("codigo", 1), push("temas", "SQL"));

Añadir múltiples temas al array

En MongoDB (Shell):
db.libros.updateOne({ codigo: 2 }, { $push: { temas: { $each: ["MongoDB", "Express"] } } });
En Java:
import static com.mongodb.client.model.Updates.pushEach;

// Añadir múltiples temas al array
collection.updateOne(eq("codigo", 2), pushEach("temas", List.of("MongoDB", "Express")));

Eliminar un tema del array

En MongoDB (Shell):
db.libros.updateOne({ codigo: 2 }, { $pull: { temas: "Subversión" } });
En Java:
import static com.mongodb.client.model.Updates.pull;

// Eliminar el tema "Subversión" del libro con código 2
collection.updateOne(eq("codigo", 2), pull("temas", "Subversión"));

3. Operaciones de Agregación

Sumar el total de stock de todos los artículos

En MongoDB (Shell):
db.articulos.aggregate([
    { $group: { _id: null, totalStock: { $sum: "$stock" } } }
]);
En Java:
import static com.mongodb.client.model.Aggregates.group;
import static com.mongodb.client.model.Accumulators.sum;

// Sumar el total de stock
collection.aggregate(List.of(group(null, sum("totalStock", "$stock"))))
         .forEach(doc -> System.out.println(doc.toJson()));

Calcular el precio promedio de todos los artículos

En MongoDB (Shell):
db.articulos.aggregate([
    { $group: { _id: null, promedioPvp: { $avg: "$pvp" } } }
]);
En Java:
import static com.mongodb.client.model.Accumulators.avg;

// Calcular el precio promedio
collection.aggregate(List.of(group(null, avg("promedioPvp", "$pvp"))))
         .forEach(doc -> System.out.println(doc.toJson()));

Calcular el total de ventas agrupadas por categoría

En MongoDB (Shell):
db.articulos.aggregate([
    { $project: { categoría: 1, totalVentas: { $multiply: ["$uv", "$pvp"] } } },
    { $group: { _id: "$categoría", ventasTotales: { $sum: "$totalVentas" } } }
]);
En Java:
import static com.mongodb.client.model.Aggregates.project;
import static com.mongodb.client.model.Aggregates.group;
import static com.mongodb.client.model.Accumulators.sum;

collection.aggregate(List.of(
    project(new Document("categoría", 1).append("totalVentas", new Document("$multiply", List.of("$uv", "$pvp")))),
    group("$categoría", sum("ventasTotales", "$totalVentas"))
)).forEach(doc -> System.out.println(doc.toJson()));

Conclusión

Este artículo muestra cómo realizar operaciones comunes y avanzadas en MongoDB utilizando su shell y cómo implementarlas en Java con el driver oficial. Las equivalencias entre ambas herramientas facilitan el desarrollo de aplicaciones más completas y robustas.

Si necesitas ejemplos adicionales o más detalles sobre alguna operación específica, ¡déjame saber! 😊


¿QUÉ TE HA PARECIDO EL ARTÍCULO? Danos tu opinión al final de la página.
Deja tu comentario y ayúdanos a crecer.


¡SÍGUENOS EN TUS REDES FAVORITAS!
AYUDANOS A CRECER Y QUE LLEGUEMOS A TODAS LAS PERSONAS QUE NOS NECESITANA. SÍGUENOS EN TUS REDES.
Entra AQUÍ y elíge donde seguirnos. 

 

 


NUESTRAS ÚLTIMAS PUBLICACIONES

AYUDANOS A CRECER Y A LLEGAR A TODAS LAS PERSONAS QUE NOS NECESITAN.

Contenido restringido

Acceso de usuarios existentes
   
Registro de un nuevo usuario
*Campo necesario

Tags:

Comments are closed

Estado de acceso
ESTADO DE ACCESO
TRADUCTORES
COMPARTENOS
error: CONTENIDO PROTEGIDO