Usar la base de datos NoSQL MongoDB con Java

Publicado por pico.dev el .
blog-stack gnu-linux planeta-codigo planeta-linux programacion
Comentarios

MongoDB
Java

En un artículo anterior hacía una pequeña introducción a la base de datos NoSQL MongoDB comentando sus características, como empezar a usarla con Docker y como lanzar algunos comandos para crear bases de datos y colecciones junto las operaciones básicas de inserción, actualización, eliminación y búsquedas con consultas desde la shell que ofrece MongoDB para esta base de datos que guarda documentos.

La shell sirve para hacer estas consultas pero el caso de uso principal es usarlo desde una aplicación con alguno de los lenguajes de programación para los que se proporciona un controlador. MongoDB se puede usar desde cualquiera de los lenguajes de programación más populares entre ellos Java. En este artículo muestro con un ejemplo como realizar las operaciones que utilizaba desde la shell de MongoDB pero desde una aplicación Java.

Para el ejemplo uso una aplicación Java con Spring Boot en la que hay que incluir la dependencia org.springframework.boot:spring-boot-starter-data-mongodb que proporciona el acceso a esta base de datos. Para comunicación con el servidor de MongoDB hay que crear una instancia del cliente de la base de datos, una instancia de la clase MongoClient para lo que simplemente necesitamos el host y puerto en la que está arrancado el servidor. En el caso del ejemplo localhost y el puerto de MongoDB que por defecto es 27017. Al usar Spring defino un nuevo servicio en el contenedor de dependencias y la inyecto en la clase de la aplicación para hacer uso de ella, dado lo simple que es el ejemplo en el mismo archivo de código fuente.

Los documentos en MongoDB están en formato JSON, como Java no ofrece de una sintaxis sencilla de literales de listas y mapas para el uso de documentos JSON hay que usar algunas clases de la API de MongoDB para la construcción de los documentos, para las búsquedas en las que indicaremos filtros usaremos la clase Filters, Updates para las actualizaciones y para la construcción de documentos de datos y actualizaciones Document. Con la instancia de la clase cliente que da acceso a la base de datos MongoDB desde Java se listan las bases de datos, colecciones y lanzan los comandos.

Con la referencia a una colección se realizan las operaciones de inserción de un documento, actualización del documento completo o de una parte, eliminación de un documento y búsqueda de documentos con una consulta.

La instancia del servidor de MongDB la inicio usando Docker con un archivo de Docker Compose y el comando docker-compose up. En la serie de artículos sobre Docker que escribí puedes aprender como empezar a usar Docker y adquirir un conocimiento hasta un nivel intermedio.

El resultado en la terimnal de ejecutar el ejemplo con el comando gradlew run es el siguiente donde se muestran las bases de datos, la colección users creada en el ejemplo, los usuarios de la colección y una búsqueda de un usuario, el resultado de actualizar la propiedad de un documento y finalmente el número de documentos en la colección.

Spring ofrece en su API mediante el proyecto Spring Data MongoDB algunas clases adicionales para facilitar el acceso y obtención de datos de MongoDB. Entre estas clases están MongoTemplate, MongoOperations y MongoRepository cuyo uso puede consultarse en su manual de referencia.

En el libro MongDB in Action comentan más detalladamente y de forma más completa las opciones que se pueden utilizar en el lenguaje de consulta, muchas de las opciones son equivalentes a las que son conocidas del lenguaje SQL de las bases de datos relacionales.

El código fuente completo del ejemplo puedes descargarlo del repositorio de ejemplos de Blog Bitix alojado en GitHub y probarlo en tu equipo ejecutando el comando docker-compose up && ./gradlew run.

Yo apoyo al software libre