Listar colecciones en MongoDB

En este artículo les mostraré rápidamente como listar las colecciones de una base de datos MongoDB. Pero antes de eso, ¿Que son las colecciones?

Al igual que en una base de datos MySQL, almacenamos registros en tablas, en MongoDB almacenamos registros (Aquí los vamos a llamar documentos) en una colección. Así que podemos decir que las colecciones serán algo así, como las tablas de nuestra base de datos MongoDB.

Ahora que tenemos una idea de que son las colecciones, si estás acostumbrado a trabajar con MySQL verás que la forma de listar las colecciones en MongoDB no es muy distinta de como lo venias haciendo actualmente.

Entonces, vayamos al grano. Lo primero que debes hacer (Al igual que con una base de datos MySQL) es conectar a tu consola de MongoDB para poder ejecutar comandos que serán interpretados por el motor de la base de datos. Para esto escribimos en la consola:


mongo


Ya en la consola de MongoDB, si queremos conocer las colecciones que tiene nuestra base, solo debemos ejecutar:


show collections


Esto nos devolverá un listado con todas las colecciones que tiene actualmente la base de datos.

Espero que este artículo les haya sido de ayuda.

Buscar columnas por nombre en MySQL

Puede que alguna vez te hayas preguntado, o incurriste en la necesidad de saber si un determinado dato se estaba almacenando o no en la base de datos. Esto es algo que suele suceder si estas heredando algún sistema y no tienes toda la documentación técnica o si de repente estas utilizando algún módulo, paquete o librería de un tercero que almacena información en tu base de datos.

Quizás una forma práctica de poder resolver esto es buscando el nombre del dato, o mejor dicho el nombre de la columna donde suponemos que se guarda esa información en la base de datos.


Veamos un ejemplo práctico

Digamos, que estoy trabajando con un sistema que administra libros y necesito saber si mi sistema almacena el código ISBN de cada libro. Podría efectuar una consulta para obtener todas las tablas que contengan una columna con el nombre ISBN, de forma tal que me de in indicio de si dicha info esta siendo o no almacenada.

Para eso en nuestra consola de MySQL podemos ejecutar el siguiente comando.


SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE 'ISBN';


Esto nos devolvería una lista (En formato de tabla) con el nombre de las tablas donde se encuentra dicho campo.

Ahora bien, que pasa si en realidad el campo se llama CODIGO_ISBN o ISBN_CODE ? El ejemplo anterior no nos serviría o no nos devolvería nada, ya que está filtrando por el nombre exacto de ISBN, por lo que necesitamos de alguna forma especificar que contenga la palabra ISBN pero que no sea exactamente ese nombre. Para este caso, podemos hacer unas mínimas modificaciones a la consulta, de forma tal que quede así:


SELECT TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%ISBN%';


Ahora si, esta consulta nos devolverá una tabla con dos columnas, en la primera encontraremos el nombre de la tabla y en la segunda el nombre del campo de esa tabla que contenga la palabra ISBN.

Espero que este artículo les haya sido de ayuda.

Chequear tamaño de base y tablas en MySQL

A veces nos encontramos con la necesidad de saber cuanto están pesando nuestra base de datos, ya sea porque necesitamos que el sitio periforme mejor o porque queremos optimizar nuestro manejo de datos.

MySQL es uno de los motores de bases de datos más utilizados en el desarrollo de aplicaciones web, no es el único, pero si uno de los más populares. Es por esto que la elegí como referencia para este artículo.

Sin más vueltas vamos a explicar como obtener el tamaño de tu base de datos por medio de unas simples consultas a la base de datos.

Primero necesitas conectarte a la base de datos para poder correr las consultas. Esto es algo que puedes realizar ejecutando en tu consola el siguiente comando:


mysql -h DB_HOST -u DB_USERNAME -pDB_PASSWORD DB_DATABASENAME


Donde DB_HOST es el host name de donde se encuentra tu base de datos (si estas trabajando en local puede ser localhost) DB_USERNAME y DB_PASSWORD son el nombre de usuario y contraseña que utilizas respectivamente para conectar a la base de datos y finalmente DB_DATABASENAME es el nombre de la base de datos a la que quieres conectarte.

También puedes usar otras herramientas como MySQL Workbench (por ejemplo) para ejecutar las consultas.

Una vez en la consola de MySQL para obtener el tamaño de nuestra base de datos en MB debemos ejecutar la siguiente consulta:


SELECT table_schema AS "Database", 
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Size (MB)" 
FROM information_schema.TABLES 
GROUP BY table_schema;


Si queremos la misma información pero en GB podemos ejecutar:


SELECT table_schema AS "Database", 
ROUND(SUM(data_length + index_length) / 1024 / 1024 / 1024, 2) AS "Size (GB)" 
FROM information_schema.TABLES 
GROUP BY table_schema;


Esto está bastante bueno pero solo nos da una visión general, si queremos tener algo más detallado, podemos ejecutar otras consultas similares para obtener el tamaño detallado por tablas, por ejemplo, para obtener el tamaño de las tablas en MB, podemos ejecutar:


SELECT table_name AS "Table",
ROUND(((data_length + index_length) / 1024 / 1024), 2) AS "Size (MB)"
FROM information_schema.TABLES
WHERE table_schema = "database_name"
ORDER BY (data_length + index_length) DESC;


Para obtener la misma información pero en GB, ejecutaremos:


SELECT table_name AS "Table",
ROUND(((data_length + index_length) / 1024 / 1024 / 1024), 2) AS "Size (GB)"
FROM information_schema.TABLES
WHERE table_schema = "database_name"
ORDER BY (data_length + index_length) DESC;


Espero que este artículo les haya sido de ayuda.