2. Bases de datos NoSQL

2.4. Empezar a trabajar con el SGBD MongoDB

En la máquina virtual proporcionada por la UOC tenemos instalado un SGBD MongoDB.

Para conectarnos al servidor de MongoDB abrimos un terminal, escribimos mongosh y nos saldrá el cursor >

Figura 73. Ejemplo de conexión a MongoDB por terminal.
Fuente: elaboración propia.

Ya estamos conectados al servidor con el cliente de la línea de comandos y ya podremos escribir las órdenes y sentencias para interactuar con el servidor de MongoDB.

Para visualizar las bases de datos creadas:

show dbs

Figura 74. Mostrar las bases de datos creadas.
Fuente: elaboración propia.

Como aún no hemos creado ninguna base de datos, solo nos muestra las bases de datos del sistema.

Para crear una nueva base de datos vacía usamos la orden use.

Vamos a generar la base de datos uoc.

use uoc

La orden use sirve tanto para crear una base de datos nueva como para conectarse a una base de datos existente. La orden intenta conectarse a una base de datos existente y si no existe la crea.

Esta es una característica general de MongoDB, es muy flexible y da pocos errores. En otros sistemas de gestión de bases de datos como MySQL, al intentar conectar con una base de datos inexistente saltaría un error. En MongoDB no salta error y se crea la nueva base de datos. En realidad, no la crea, guarda espacio para crear en ella colecciones de documentos. Si generamos una nueva base de datos con el comando use y no creamos colecciones en ella, no queda almacenada.

Vemos en esta secuencia de comandos cómo consultamos las bases de datos existentes en el sistema con show dbs, generamos la base de datos uoc con use uoc, y cómo cuando volvemos a consultar las bases de datos con show dbs no aparece la base de datos uoc.

Figura 75. Utilizar una base de datos.
Fuente: elaboración propia.

Para que la nueva base de datos quede guardada en el sistema es necesario que tenga colecciones de documentos.

Vamos a crear ahora una nueva colección vacía en la base de datos uoc utilizando la instrucción createCollection().

Figura 76. Crear una colección de documentos.
Fuente: elaboración propia.

Volvemos a conectarnos a la base de datos uoc con use uoc y creamos la colección de documentos vacía llamada chr1.

Si os fijáis, primero ejecutamos la instrucción o función db.createCollection(chr1); pero da error porque el parámetro que espera la función no está entre comillas simples: «chr1».

Al escribir el parámetro entre comillas simples db.createCollection("chr1"); la nueva colección llamada chr1 se crea correctamente en la base de datos uoc, que ya no está vacía, y al ejecutar show dbs ya nos muestra la base de datos uoc.

Vamos a analizar la instrucción db.createCollection("chr1"); y nos servirá para entender cómo funcionan las instrucciones en MongoDB.  Como ya estamos en la base de datos uoc, con la parte de la instrucción db….. se refiere a la base de datos que estamos usando, y a continuación la instrucción createCollection() que en realidad es una función que puede usar parámetros entre paréntesis.

Como ya veremos, la mayoría de las instrucciones son funciones que pueden usar o no parámetros. Si la instrucción no necesita parámetros dejaremos los paréntesis vacíos ().

Vamos a ver algunos comandos útiles de MongoDB:

  • db.help() Muestra la ayuda para los métodos de la base de datos.
  • db.<collection>.help() Muestra la ayuda para los métodos de la colección. La <collection> puede ser el nombre de una colección ya creada o no creada.
  • Show db Muestra la lista de todas las bases de datos del sistema.
  • use db Cambia de la base de datos actual a la base de datos <db>.
  • show collections Muestra la lista de todas las colecciones de la base de datos actual.
  • show users Muestra la lista de todos los usuarios de la base de datos actual.
  • show databases Nuevo a partir de la versión 2.4. Muestra la lista de todas las bases de datos disponibles.
  • db.<collection>.find() Muestra todos los documentos de la colección <collection>.
  • db.<collection>.find().pretty() Muestra todos los documentos de la colección <collection> en un formato JSON más leíble.

Para ver las colecciones creadas en la base de datos usamos la instrucción siguiente:

show collections
Figura 77. Mostrar las colecciones de documentos.
Fuente: elaboración propia.