Cómo conectarse a MongoDB

Aprende cómo acceder a la instancia de MongoDB de tu nodo API.

Note

Esto es una función avanzada

La Pasarela REST ofrece una amplia variedad de puntos finales para que no tengas que conectarte directamente a la base de datos interna de un nodo API.

Sin embargo, si estás desarrollando nuevos complementos para Bitxor o analizando datos extensos de la cadena de bloques, es posible que necesites conectarte directamente a MongoDB con fines de depuración.

Al final de esta guía, estarás conectado a la instancia de la base de datos de tu nodo API y realizarás algunas consultas básicas.

Prerrequisitos

  • Tener un nodo API o Dual ejecutándose dentro de Docker con un puerto abierto para la base de datos (consultar la siguiente sección).

Abrir el puerto de la base de datos

En la guía Ejecutar un nodo, has utilizado bitxor-bootstrap para instanciar y ejecutar los servicios de nodo necesarios (cliente bitxorcore, puntos finales de API, bases de datos, etc.). Por razones de seguridad, todos estos servicios se ejecutan dentro de contenedores de Docker y, excepto los puntos finales públicos, están aislados del exterior.

Esto significa que la base de datos de MongoDB que los nodos API utilizan para almacenar en caché el estado de la cadena de bloques es inaccesible de forma predeterminada. Para reenviar su puerto interno al host, debes proporcionar a bitxor-bootstrap un archivo de configuración personalizado que contenga las siguientes líneas:

databases:
  - openPort: true

Luego, utiliza este archivo al configurar bitxor-bootstrap, por ejemplo:

bitxor-bootstrap start -p testnet -a dual -c custom_parameters.yml

Nodos configurados previamente pueden necesitar detenerse y reiniciarse con el argumento --upgrade para procesar el archivo yml personalizado actualizado:

bitxor-bootstrap stop
bitxor-bootstrap start -p testnet -a dual -c custom_parameters.yml --upgrade

Warning

Esto hará que la base de datos sea accesible desde el puerto TCP 27017 del host y será extremadamente vulnerable si este puerto se expone públicamente, así que ten cuidado. Esta función solo se recomienda para fines de desarrollo.

Instalar Robo 3T

Para este tutorial, vamos a utilizar Robo 3T (anteriormente RoboMongo), una herramienta de administración de MongoDB multiplataforma, para interactuar con la base de datos.

  1. Descarga Robo 3T aquí.

  2. Abre el instalador y sigue las instrucciones de instalación.

En caso de duda, sigue la documentación oficial de instalación.

Crear una nueva conexión

  1. Abre Robo 3T y haz clic en el enlace “Create�?/strong> para agregar una nueva conexión.

resources/images/screenshots/robo3t-open.png
  1. Ingresa los siguientes detalles en la pestaña “Connection�?/strong>:

resources/images/screenshots/robo3t-connection.png
  • Type: Direct Connection

  • Name: my-node

  • Address: localhost

  • Port: 27017

  1. Si el nodo se está ejecutando localmente, haz clic en “Connect�?/strong> y pasa a la siguiente sección Consultar MongoDB.

  2. De lo contrario, si estás ejecutando el nodo en un servidor privado virtual (VPS), primero crea un túnel entre tu computadora y el servidor.

Ve a la pestaña SSH y agrega los detalles del servidor:

resources/images/screenshots/robo3t-tunnel.png

Reemplaza la Dirección SSH, nombre de usuario y método de autenticación.

  1. Después de hacer clic en “Connect�? deberías ver las colecciones de MongoDB en la base de datos llamada “bitxorcore�?/strong>.

Consultar MongoDB

Note

Utiliza este método solo para leer desde la base de datos. No modifiques ningún documento directamente en MongoDB.

  1. En la barra lateral izquierda, abre la colección que deseas consultar.

resources/images/screenshots/robo3t-collection.png
  1. En la mayoría de los casos, es posible que desees filtrar un conjunto de entradas por uno de sus atributos. Para filtrar, por ejemplo, un tipo de transacción dado, escribe una consulta con el siguiente formato en la terminal de Robo 3T:

db.getCollection('transactions').find( { "transaction.type": 16724})

Para otras consultas avanzadas, consulta la documentación de Robo3T.

  1. Haz clic en el botón “Play�?/strong> para ejecutar la consulta.

resources/images/screenshots/robo3t-query.png