Uso de la API de Oracle Database para MongoDB

Oracle Database API for MongoDB makes it possible to connect to Oracle Autonomous Database using MongoDB language drivers and tools.

La API de Oracle Database para MongoDB utiliza las capacidades de las bases de datos convergentes de una instancia de Autonomous Database para gestionar varios tipos de datos, incluidos los datos JSON, en una sola base de datos. Por ejemplo, estas capacidades de base de datos convergente permiten utilizar SQL para consultar o actualizar los datos de JSON.

Consulte API de Oracle Database para obtener más información sobre MongoDB.

Consulte Acerca de Autonomous JSON Database para obtener más información.

Consulte Acerca de los tipos de carga de trabajo de Autonomous Database para obtener más información.

Configuración del acceso para MongoDB y activación de MongoDB

Oracle Database API for MongoDB enables you to use an Oracle Autonomous Database as the data store.

Para utilizar la API MongoDB, puede crear y configurar una instancia de Autonomous Database nueva o modificar la configuración de una instancia de Autonomous Database existente. MongoDB necesita que configure el acceso de red para utilizar ACL o que defina un punto final privado para la instancia de Autonomous Database. Además de configurar el acceso de red, debe activar la API MongoDB en la instancia de Autonomous Database.

Configuración del acceso para MongoDB

Para utilizar la API MongoDB, puede crear y configurar una nueva instancia de Autonomous Database o modificar la configuración de una instancia de Autonomous Database existente mediante la configuración de ACL o la definición de un punto final privado.

Configuración de una nueva instancia de Autonomous Database para MongoDB

Siga los pasos de Aprovisionamiento o clonación de una instancia de Autonomous Database hasta el punto en el que debe seleccionar el tipo de acceso de red.

A continuación se muestra la descripción de adb_network_access_acl_provision.png

En este punto, para utilizar la API de Oracle Database para MongoDB, configure el acceso seguro seleccionando y configurando uno de estos tipos de acceso de red:

Configuración de una instancia de Autonomous Database existente para MongoDB

Abra la consola de Oracle Cloud Infrastructure para su instancia de Autonomous Database.


Descripción de adb_ajd_console_details.png

Nota

Para utilizar la API de Oracle Database para MongoDB, la red debe estar configurada y el tipo de acceso debe ser: Permitir acceso seguro desde IP y redes virtuales en la nube especificadas o Red virtual en la nube.

Configuración de listas de control de acceso (ACL)

Consulte Configuración de listas de control de acceso para una instancia de Autonomous Database existente para obtener más información.

Para configurar la ACL para una dirección IP, deberá obtener la dirección IP pública. Existen varias formas de mostrar la dirección IP pública:
  • En el área Seleccionar acceso de red, haga clic en Agregar mi dirección IP. De esta forma, se copia la dirección IP en el campo Valores.

  • Después de desactivar cualquier VPN, utilice el sitio web WhatIsMyIP.
  • Después de desactivar cualquier VPN, utilice el comando curl: curl -s https://ifconfig.me.
Nota:

Las direcciones IP públicas pueden cambiar. Cualquier cambio en su dirección IP pública requerirá un cambio en la ACL. Si no puede acceder a la base de datos, la ACL debe ser algo que comprobar.

Tipos y casos de uso de ACL

Tipo de ACL Ejemplo Comentario
Dirección IP Equipos portátiles de desarrollo local que comparten la misma dirección IP pública La forma más fácil de empezar. Cualquier equipo portátil conectado en esta LAN tendrá acceso a la base de datos con las credenciales de la base de datos.
Bloque de CIDR Portátil de desarrollo local Uso de la notación IPv4/32
Direcciones IP separadas por comas Pequeña cantidad de portátiles de desarrollo local conectados en distintas LAN (con distintas direcciones IP públicas) Puede ser tedioso trabajar con más de 10 portátiles.
Bloque de CIDR Portátiles de desarrollo local conectados en la misma subred expuesta a Internet (cada portátil tiene su propia dirección IP pública) Confíe en la notación de bloque CIDR. Consulte la calculadora aquí para obtener más información. Ejemplo: 89.84.109.0/24 proporciona 256 direcciones IP posibles de la 89.84.109.0 a la 89.84.109.255
VCN con bloque de CIDR Para pruebas, producción o el pipeline de integración y despliegue continuos alojado en OCI que tenga sus propias instancias de VCN e informáticas Asigne el compartimento de OCI por tipo de entorno.
Combinación de dirección IP y VCN con bloque CIDR Equipo portátil de desarrollo local que accede a una instancia de Autonomous Database de prueba con conexiones desde el entorno de prueba o el pipeline de integración y despliegue continuos Opción de configuración común para el trabajo de desarrollo en curso.

Activación de la API MongoDB en Autonomous Database

Después de configurar el acceso de red para la instancia de Autonomous Database, active la API MongDB.

Para activar la API MongoDB para una instancia existente:

  1. En la página de detalles de Autonomous Database, seleccione el separador Configuración de herramientas.
  2. Haga clic en Editar configuración de herramienta.
  3. En la fila de API MongoDB, seleccione la columna Activar herramienta para mostrar Activado.
  4. Haga clic en Aplicar.

El estado del ciclo de vida cambia a la actualización hasta que se activa MongoDB.

También puede activar la API MongoDB al aprovisionar o clonar una instancia seleccionando Mostrar opciones avanzadas y seleccionando el separador Herramientas.

Consulte Gestión de las herramientas incorporadas de Autonomous Database para obtener más información.

Gestión de usuarios para MongoDB

Oracle Database API for MongoDB enables you to use an Oracle Autonomous Database as the data store. Si desea o necesita utilizar una instancia de Autonomous Database existente para este fin, aquí está el flujo de trabajo.

La API de Oracle Database para MongoDB permite la asignación de objetos de Autonomous Database a objetos MongoDB de la siguiente forma:

Objeto MongoDB Objeto de Oracle Autonomous Database
Base de Datos Esquema
recopilación tabla
Documento documento (en una columna)

Por ejemplo, podría crear una recopilación mediante la API de Oracle Database para MongoDB de la siguiente forma:

  use scott;
  db.createCollection('fruit');

Se crea una tabla denominada FRIT en el esquema SCOTT.

Al conectarse a la API de Oracle Database para MongoDB, se autentica mediante un nombre de usuario y una contraseña de Autonomous Database. Esta conexión autenticada a continuación accede a las recopilaciones del esquema correspondiente. Este usuario debe cumplir los siguientes requisitos:

Nota

El rol DWROLE de Autonomous Database contiene estos roles, entre otros.

El acceso a los esquemas no otorgados al usuario está prohibido. Por ejemplo, el usuario SCOTT solo puede acceder a recopilaciones del esquema SCOTT. Hay una excepción. Si el usuario autenticado tiene los privilegios de Autonomous Database CREATE USER, ALTER USER y DROP USER, ese usuario puede acceder a cualquier esquema activado para ORDS.

Además, un usuario con estos privilegios puede crear esquemas de forma implícita. Es decir, cuando el usuario crea una colección en una base de datos que no existe, el esquema se creará automáticamente. Consulte API de Oracle Database para obtener más información sobre MongoDB.

Creación de un usuario de Autonomous Database de prueba para MongoDB

En los siguientes pasos se utiliza Database Actions para crear un usuario de prueba con los roles adecuados. También puede utilizar SQL de Database Actions u otras utilidades de la línea de comandos SQL para ejecutar las sentencias SQL directamente. Consulte Creación de usuarios en Autonomous Database: Conexión con una herramienta de cliente para obtener más información.
  1. Open the Oracle Cloud Infrastructure Console for your Autonomous Database.
  2. Seleccione Acciones de base de datos.
  3. From the Database Actions Launchpad, select Administration > Database Users.
  4. En la página Usuarios de la base de datos, seleccione + Crear usuario.
  5. Introduzca un nombre de usuario y una contraseña para el usuario de prueba. Seleccione Acceso web y defina la cuota en DATA de tablespace.
    Descripción de database_actions_create_user_for_mongodb_use.png a continuación
  6. Seleccione el separador Roles otorgados.
  7. Además de los roles por defecto, seleccione y agregue el rol SODA_APP para el usuario.
    Descripción de database_actions_grant_roles_for_mongodb_use.png a continuación
  8. Haga clic en el botón Create User.
Puede utilizar este usuario, o un usuario igualmente autenticado, con fines de prueba. Consulte Test Connection Using the Command Line para obtener más información.

Conexión de aplicaciones MongoDB a Autonomous Database

Recuperación de la cadena de conexión MongoDB de Autonomous Database

Puede recuperar la cadena de conexión de API MongoDB de la consola de Oracle Cloud Infrastructure.

Después de obtener la cadena de conexión de API MongoDB, puede utilizar el shell MongoDB, que es una utilidad de línea de comandos, para conectar y consultar los datos.

Primero debe configurar el acceso de red y activar la API MongoDB. Consulte Configuración del acceso para MongoDB para obtener más información.

Para recuperar la cadena de conexión de API MongoDB:

  1. En la página de detalles de Autonomous Database, seleccione el separador Configuración de herramientas.
  2. En la fila de API MongoDB, en URL de acceso, haga clic en Copiar.
A continuación se muestra la descripción de adb_tools_mongo_connect_string.png
Recuperación de la cadena de conexión de Autonomous Database desde Database Actions

Utilice el shell MongoDB, que es una utilidad de línea de comandos que se usa para conectar a los datos y consultarlos.
  1. Puede recuperar la cadena de conexión de la instancia de Autonomous Database con Database Actions.

    Consulte Acceso a Database Actions como ADMIN para obtener más información.

  2. En la pantalla de inicio de Database Actions, en Servicios relacionados, haga clic en API de Oracle Database para MongoDB.
  3. On the Oracle Database API for MongoDB page click Copy.

Prueba de la conexión mediante la línea de comandos

  1. Inicie sesión como usuario de prueba. Consulte Creación de un usuario de Autonomous Database de prueba para MongoDB para obtener más información.
    $ mongosh --tls --tlsAllowInvalidCertificates 'mongodb://TESTUSER:<PASSWORD>@<database URL>.
    <OCI region>.oraclecloudapps.com:27017/admin?authMechanism=PLAIN&authSource=$external&ssl=true&loadBalanced=false'
    Current Mongosh Log ID: 614c9e2a01e3575c8c0b2ec7
    Connecting to:         mongodb://TESTUSER:<PASSWORD>@<database URL>.<OCIregion>.oraclecloudapps.com:27017/admin?
    authMechanism=PLAIN&authSource=$external&tls=true&loadBalanced=false
    Using MongoDB:                   3.6.2
    Using Mongosh:                   1.0.7
    For mongosh info see: https://docs.mongodb.com/mongodb-shell/admin
    > show dbs
    testuser    0 B
    > 
    Nota

    Utilice la codificación porcentual de URI para sustituir cualquier carácter reservado en el URI de cadena de conexión, en particular, los caracteres del nombre de usuario y la contraseña. Estos son los caracteres reservados y sus codificaciones de porcentaje:

    ! # $ % & ' ( ) * +
    %21 %23 %24 %25 %26 %27 %28 %29 %2A %2B
    , / : ; = ? @ [ ]
    %2C %2F %3A %3B %3D %3F %40 %5B %5D

    Por ejemplo, si el nombre de usuario es RUTH y la contraseña es @least1/2#?, la cadena de conexión MongoDB al servidor <server> podría tener este aspecto:

    'mongodb://RUTH:%40least1%2F2%23%3F@<server>:27017/ruth/ ...'

    Según las herramientas o los controladores que utilice, es posible que pueda proporcionar un nombre de usuario y una contraseña como parámetros independientes, en lugar de como parte de una cadena de conexión de URI. En ese caso, es probable que no necesite codificar ningún carácter reservado que contenga.

    Consulte también:

  2. Crear una colección e insertar documentos en la colección.
    testuser> show collections
    
    testuser> db.createCollection( 'fruit' )
    { ok: 1 }
    testuser> show collections
    fruit
    testuser> db.fruit.insertOne( {name:"orange", count:42} )
    {
      acknowledged: true,
      insertedId: ObjectId("614ca31fdab254f63e4c6b47")
    }
    testuser> db.fruit.insertOne( {name:"apple", count:12, color: "red"} )
    {
      acknowledged: true,
      insertedId: ObjectId("614ca340dab254f63e4c6b48")
    }
    testuser> db.fruit.insertOne( {name:"pear", count:5} )
    {
      acknowledged: true,
      insertedId: ObjectId("614ca351dab254f63e4c6b49")
    }
    testuser>
  3. Consulte la recopilación mediante un cliente SQL como Database Actions.
    SELECT
         f.json_document.name, 
         f.json_document.count, 
         f.json_document.color
    FROM fruit f;
    A continuación se muestra la descripción de database_actions_sql_for_mongodb_use.png

Prueba de la conexión mediante una aplicación Node.js

  1. Descargue Node.js. Si ya ha descargado o instalado Node.js para su entorno, puede omitir este paso.
    $ wget https://nodejs.org/dist/latest-v14.x/node-v14.17.5-linux-x64.tar.xz
  2. Extraiga el contenido del archivo Node,js. Si ya ha descargado o instalado Node.js para su entorno, puede omitir este paso.
    $ tar -xf node-v14.17.5-linux-x64.tar.xz
  3. Configure la variable de entorno PATH. Si ya ha descargado o instalado Node.js para su entorno, puede omitir este paso.
    $ export PATH="`pwd`"/node-v14.17.5-linux-x64/bin:$PATH
  4. Pruebe la conexión con un ejemplo de Javascript.
    1. Create a new directory.
      $ mkdir autonomous_mongodb
      $ cd autonomous_mongodb
      $ npm init –y
    2. Instale la dependencia mongodb.
      $ npm install mongodb
    3. Cree una aplicación JavaScript denominada connect.js.
      const { MongoClient } = require("mongodb");
      const uri =
         "mongodb://TESTUSER:<PASSWORD>@<Database URI>.<OCI region>.oraclecloudapps.com:27017/admin?authMechanism=PLAIN&authSource=$external&ssl=true&loadBalanced=false";
      
      const client = new MongoClient(uri);
      
      async function run() {
        try {
              await client.connect();
      
              const database = client.db('admin');
              const movies = database.collection('movies');
      
              // Insert a movie
              const doc = { title: 'Back to the Future', 
                            year: 1985, genres: ['Adventure', 'Comedy', 'Sci-Fi'] }
              const result = await movies.insertOne(doc);
      
              // Query for a movie that has the title 'Back to the Future' :)
              const query = { title: 'Back to the Future' };
              const movie = await movies.findOne(query);
      
              console.log(movie);
        } finally {
           // Ensures that the client will close when you finish/error
           await client.close();
        }
      }
      run().catch(console.dir);
      
      Nota

      Utilice la codificación porcentual de URI para sustituir cualquier carácter reservado en el URI de cadena de conexión, en particular, los caracteres del nombre de usuario y la contraseña. Estos son los caracteres reservados y sus codificaciones de porcentaje:

      ! # $ % & ' ( ) * +
      %21 %23 %24 %25 %26 %27 %28 %29 %2A %2B
      , / : ; = ? @ [ ]
      %2C %2F %3A %3B %3D %3F %40 %5B %5D

      Por ejemplo, si el nombre de usuario es RUTH y la contraseña es @least1/2#?, la cadena de conexión MongoDB al servidor <server> podría tener este aspecto:

      'mongodb://RUTH:%40least1%2F2%23%3F@<server>:27017/ruth/ ...'

      Según las herramientas o los controladores que utilice, es posible que pueda proporcionar un nombre de usuario y una contraseña como parámetros independientes, en lugar de como parte de una cadena de conexión de URI. En ese caso, es probable que no necesite codificar ningún carácter reservado que contenga.

      Consulte también:

    4. Ejecutar ejemplo. La salida debe ser similar a la siguiente.
      $ node connect
      {
        _id: new ObjectId("611e3266005202371acf27c1"),
        title: 'Back to the Future',
        year: 1985,
        genres: [ 'Adventure', 'Comedy', 'Sci-Fi' ]
      }