Conectar MongoDB a R usando mongolite

MongoDB es un gestor fabuloso de base de datos no relacionales (NoSQL). Pero para realizar análisis estadísticos potentes se queda corto. Y aquí es, precisamente, donde R se hace grande. Por lo tanto, un buen proceso de trabajo podría constar de conectar los dos: MongoDB y R. Aquí os voy a contar cómo conectar MongoDB a R mediante el uso del paquete de R llamado mongolite.

Cómo conectar MongoDB a R

Existen diversos paquetes de R que permiten conectarlo con una base de datos MongoDB. Entre ellos se encuentra RMongo, pero este paquete está desactualizado y ha dejado de estar presente en los servidores CRAN.

En su lugar, el paquete que recibe mejores críticas es el de mongolite. En el manual de este paquete de R, así como su página oficial de CRAN, existen muchísimos aspectos de sus posibilidades.

Aquí os voy a enseñar cómo poder utilizar mongolite para conectar MongoDB a R.

Instalar mongolite

Para instalar el paquete de R mongolite basta con ejecutar la siguiente función:

install.packages("mongolite", dependencies = TRUE)

Solución de errores durante la instalación en Linux

En mi caso, que empleo Linux en lugar de Windows, me salió un error en la instalación de mongolite al ejecutar el código anterior.

Using PKG_CFLAGS=
Using PKG_LIBS=-lssl -lcrypto -lsasl2 -lresolv
-----------------------------[ ANTICONF ]-------------------------------
Configuration failed to find SASL or OpenSSL. Try installing:
 * deb: libssl-dev, libsasl2-dev (Debian, Ubuntu, etc)
 * rpm: openssl-devel, cyrus-sasl-devel (Fedora, CentOS, RHEL)
 * csw: libssl_dev, sasl_dev (Solaris)
 * brew: openssl@1.1 (Mac OSX)
If openssl is already installed, check that 'pkg-config' is in your
PATH and PKG_CONFIG_PATH contains a openssl.pc file. If pkg-config
is unavailable you can set INCLUDE_DIR and LIB_DIR manually via:
R CMD INSTALL --configure-vars='INCLUDE_DIR=... LIB_DIR=...'
---------------------------[ ERROR MESSAGE ]----------------------------
src/tests/dependencies.c:1:10: fatal error: openssl/evp.h: No existe el archivo o el directorio
 #include <openssl/evp.h>
          ^~~~~~~~~~~~~~~
compilation terminated.

Viendo en detalle el error, al emplear Linux Mint, me indica en la línea 5 que tengo instalar las librerías libssl-dev y libsasl2-dev. Me voy al gestor de paquetes Synaptic y los instalo.

A continuación vuelvo a instalar el paquete mongolite en R, y esta vez va como la seda. Por fin lo tengo ya instalado correctamente. A continuación lo cargamos en R:

library(mongolite)

Función mongo() para conectar MongoDB a R

El paquete mongolite tiene la función mongo() que permite conectar una colección a R. Esta función presenta estos argumentos predeterminados.

mongo(
  collection = "test",
  db = "test",
  url = "mongodb://localhost",
  verbose = FALSE,
  options = ssl_options()
)

De modo predeterminado se conecta a la base de datos test (db = "test") y a la colección homónima (collection = "test"). Asimismo, la dirección a la que se conecta automáticamente es el localhost (url = "mongodb://localhost"). El resto de las opciones las tenéis perfectamente descritas aquí.

Si tenemos, como en otras ocasiones hemos mencionado, la base de datos coches y la colección dtc en nuestro servidor local, vamos a cargarla en R con el nombre dtc_R.

dtc_R <- mongo(
  collection = "dtc",
  db = "coches"
)

De este modo ya podemos ejecutar búsquedas (queries) en R en colecciones de MongoDB.

Para conectar R a un servidor que no esté en nuestro ordenador, os remito al manual donde lo explican con todo lujo de detalles.

3 comentarios en “Conectar MongoDB a R usando mongolite”

Deja un comentario