En este módulo, aprenderás cómo integrar MongoDB con Java, uno de los lenguajes de programación más populares. Exploraremos cómo conectarse a una base de datos MongoDB, realizar operaciones CRUD y utilizar algunas características avanzadas de MongoDB desde una aplicación Java.
Contenido
Configuración del Entorno
Requisitos Previos
- Java Development Kit (JDK) instalado.
- MongoDB instalado y en ejecución.
- Un IDE como IntelliJ IDEA o Eclipse.
Dependencias
Para trabajar con MongoDB en Java, utilizaremos el driver oficial de MongoDB para Java. Puedes agregarlo a tu proyecto utilizando Maven o Gradle.
Maven
<dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver-sync</artifactId> <version>4.3.1</version> </dependency>
Gradle
Conexión a MongoDB
Para conectarse a una base de datos MongoDB desde Java, utilizaremos la clase MongoClient
.
import com.mongodb.client.MongoClient; import com.mongodb.client.MongoClients; import com.mongodb.client.MongoDatabase; public class MongoDBConnection { public static void main(String[] args) { // Crear una instancia de MongoClient MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017"); // Conectar a la base de datos "test" MongoDatabase database = mongoClient.getDatabase("test"); System.out.println("Conexión exitosa a la base de datos: " + database.getName()); } }
Explicación
MongoClients.create("mongodb://localhost:27017")
: Crea una instancia deMongoClient
conectada al servidor MongoDB enlocalhost
en el puerto27017
.mongoClient.getDatabase("test")
: Obtiene una referencia a la base de datos llamada "test".
Operaciones CRUD
Crear Documentos
Para insertar documentos en una colección, utilizamos el método insertOne
.
import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import org.bson.Document; public class CreateDocument { public static void main(String[] args) { MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017"); MongoDatabase database = mongoClient.getDatabase("test"); MongoCollection<Document> collection = database.getCollection("users"); Document user = new Document("name", "John Doe") .append("age", 30) .append("email", "[email protected]"); collection.insertOne(user); System.out.println("Documento insertado con éxito"); } }
Leer Documentos
Para leer documentos de una colección, utilizamos el método find
.
import com.mongodb.client.FindIterable; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import org.bson.Document; public class ReadDocument { public static void main(String[] args) { MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017"); MongoDatabase database = mongoClient.getDatabase("test"); MongoCollection<Document> collection = database.getCollection("users"); FindIterable<Document> users = collection.find(); for (Document user : users) { System.out.println(user.toJson()); } } }
Actualizar Documentos
Para actualizar documentos, utilizamos el método updateOne
.
import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import org.bson.Document; import com.mongodb.client.model.Updates; public class UpdateDocument { public static void main(String[] args) { MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017"); MongoDatabase database = mongoClient.getDatabase("test"); MongoCollection<Document> collection = database.getCollection("users"); Document query = new Document("name", "John Doe"); Document update = new Document("$set", new Document("age", 31)); collection.updateOne(query, update); System.out.println("Documento actualizado con éxito"); } }
Eliminar Documentos
Para eliminar documentos, utilizamos el método deleteOne
.
import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import org.bson.Document; public class DeleteDocument { public static void main(String[] args) { MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017"); MongoDatabase database = mongoClient.getDatabase("test"); MongoCollection<Document> collection = database.getCollection("users"); Document query = new Document("name", "John Doe"); collection.deleteOne(query); System.out.println("Documento eliminado con éxito"); } }
Consultas Avanzadas
Puedes realizar consultas más complejas utilizando filtros y operadores.
import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import org.bson.Document; import com.mongodb.client.model.Filters; public class AdvancedQuery { public static void main(String[] args) { MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017"); MongoDatabase database = mongoClient.getDatabase("test"); MongoCollection<Document> collection = database.getCollection("users"); Document user = collection.find(Filters.and(Filters.eq("name", "John Doe"), Filters.gt("age", 25))).first(); if (user != null) { System.out.println(user.toJson()); } else { System.out.println("No se encontró ningún documento que coincida con la consulta"); } } }
Manejo de Errores
Es importante manejar posibles errores al interactuar con MongoDB.
import com.mongodb.MongoException; import com.mongodb.client.MongoClient; import com.mongodb.client.MongoClients; import com.mongodb.client.MongoDatabase; public class ErrorHandling { public static void main(String[] args) { try { MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017"); MongoDatabase database = mongoClient.getDatabase("test"); System.out.println("Conexión exitosa a la base de datos: " + database.getName()); } catch (MongoException e) { System.err.println("Error al conectarse a MongoDB: " + e.getMessage()); } } }
Ejercicios Prácticos
Ejercicio 1: Insertar y Leer Documentos
- Inserta un documento en una colección llamada "products" con los campos "name", "price" y "category".
- Lee todos los documentos de la colección "products" y muestra sus contenidos.
Ejercicio 2: Actualizar y Eliminar Documentos
- Actualiza el campo "price" de un producto específico en la colección "products".
- Elimina un documento de la colección "products" basado en el campo "name".
Soluciones
Solución Ejercicio 1
import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import org.bson.Document; import com.mongodb.client.FindIterable; public class Exercise1 { public static void main(String[] args) { MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017"); MongoDatabase database = mongoClient.getDatabase("test"); MongoCollection<Document> collection = database.getCollection("products"); // Insertar documento Document product = new Document("name", "Laptop") .append("price", 1200) .append("category", "Electronics"); collection.insertOne(product); // Leer documentos FindIterable<Document> products = collection.find(); for (Document doc : products) { System.out.println(doc.toJson()); } } }
Solución Ejercicio 2
import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import org.bson.Document; import com.mongodb.client.model.Updates; public class Exercise2 { public static void main(String[] args) { MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017"); MongoDatabase database = mongoClient.getDatabase("test"); MongoCollection<Document> collection = database.getCollection("products"); // Actualizar documento Document query = new Document("name", "Laptop"); Document update = new Document("$set", new Document("price", 1100)); collection.updateOne(query, update); // Eliminar documento Document deleteQuery = new Document("name", "Laptop"); collection.deleteOne(deleteQuery); } }
Conclusión
En este módulo, hemos aprendido cómo integrar MongoDB con Java, realizar operaciones CRUD básicas y avanzadas, y manejar errores. Con estos conocimientos, estás preparado para construir aplicaciones Java que interactúen eficientemente con MongoDB. En el siguiente módulo, exploraremos cómo aplicar estos conceptos en aplicaciones del mundo real.
Curso de MongoDB
Módulo 1: Introducción a MongoDB
Módulo 2: Operaciones CRUD en MongoDB
Módulo 3: Modelado de Datos en MongoDB
Módulo 4: Indexación y Agregación
Módulo 5: Características Avanzadas de MongoDB
Módulo 6: Rendimiento y Seguridad
- Optimización del Rendimiento
- Respaldo y Restauración
- Mejores Prácticas de Seguridad
- Monitoreo y Alertas