Oracle Database-API für MongoDB verwenden

Mit der Oracle Database API for MongoDB können Sie mit MongoDB-Sprachtreibern und -Tools eine Verbindung zu Oracle Autonomous Database herstellen.

Oracle Database API for MongoDB nutzt die konvergierten Datenbankfunktionen einer Autonomous Database, um mehrere Datentypen, einschließlich JSON-Daten, in einer einzigen Datenbank zu verwalten. Mit diesen konvergierten Datenbankfunktionen können Sie beispielsweise SQL verwenden, um JSON-Daten abzufragen oder zu aktualisieren.

Hinweis

MongoDB erfordert, dass Sie den Netzwerkzugriff zur Verwendung von ACLs konfigurieren oder einen privaten Endpunkt für die Autonomous Database-Instanz definieren.

Weitere Informationen finden Sie unter Oracle Database API for MongoDB.

Weitere Informationen finden Sie unter Autonomous JSON Database.

Weitere Informationen finden Sie in Autonomous Database-Workload-Typen.

Themen

Zugriff für MongoDB konfigurieren und MongoDB aktivieren

Mit der Oracle Database API for MongoDB können Sie eine Oracle Autonomous Database als Datenspeicher verwenden.

Um die MongoDB-API zu verwenden, können Sie eine neue Autonomous Database erstellen und konfigurieren oder die Konfiguration einer vorhandenen Autonomous Database ändern.

Hinweis

MongoDB erfordert, dass Sie den Netzwerkzugriff zur Verwendung von ACLs konfigurieren oder einen privaten Endpunkt für die Autonomous Database-Instanz definieren. Sie müssen nicht nur den Netzwerkzugriff konfigurieren, sondern auch die MongoDB-API in der Autonomous Database-Instanz aktivieren.

Zugriff für MongoDB konfigurieren

Um die MongoDB-API zu verwenden, können Sie eine neue Autonomous Database erstellen und konfigurieren oder die Konfiguration einer vorhandenen Autonomous Database ändern, indem Sie ACLs konfigurieren oder einen privaten Endpunkt definieren.

Neue Autonomous Database für MongoDB konfigurieren

Befolgen Sie die Schritte unter Autonomous Database bereitstellen oder klonen bis zu dem Punkt, an dem Sie Ihren Netzwerkzugriffstyp auswählen.

Beschreibung von adb_network_access_acl_provision.png folgt
Beschreibung der Abbildung adb_network_access_acl_provision.png

Wenn Sie jetzt mit Oracle Database API for MongoDB sicheren Zugriff konfigurieren möchten, wählen und konfigurieren Sie einen der folgenden Netzwerkzugriffstypen:

Vorhandene Autonomous Database für MongoDB konfigurieren

Öffnen Sie die Oracle Cloud Infrastructure-Konsole für Ihre Autonomous Database-Instanz.



Hinweis

Um Oracle Database API for MongoDB zu verwenden, muss das Netzwerk konfiguriert sein, und der Zugriffstyp muss entweder Sicherer Zugriff nur von zulässigen IPs und VCNs oder Nur Zugriff auf privaten Endpunkt lauten.

Access-Control-Liste (ACL) einrichten

Weitere Informationen finden Sie unter Access-Control-Listen für eine vorhandene Autonomous Database-Instanz konfigurieren.

Um Ihre ACL für eine IP-Adresse zu konfigurieren, müssen Sie die öffentliche IP-Adresse beziehen. Es gibt mehrere Möglichkeiten, Ihre öffentliche IP-Adresse anzuzeigen:
  • Klicken Sie im Bereich "Netzwerkzugriff auswählen" auf Meine IP-Adresse hinzufügen. Dadurch wird Ihre IP-Adresse in das Feld Werte kopiert.

  • Nachdem Sie ein VPN deaktiviert haben, verwenden Sie die WhatIsMyIP-Website.
  • Nachdem Sie ein VPN deaktiviert haben, verwenden Sie den curl-Befehl: curl -s https://ifconfig.me.
Hinweis

Öffentliche IP-Adressen können sich ändern. Jede Änderung Ihrer öffentlichen IP-Adresse erfordert eine Änderung der ACL. Wenn Sie nicht auf Ihre Datenbank zugreifen können, sollte Ihre ACL etwas sein, das Sie überprüfen.

ACLs - Typen und Anwendungsfälle

ACL-Typ Anwendungsfall Kommentar
IP-Adresse Lokale Entwicklungs-Laptops mit derselben öffentlichen IP-Adresse Der einfachste Weg, um loszulegen. Jeder Laptop, der mit diesem LAN verbunden ist, hat Zugriff auf die Datenbank mit den Datenbankzugangsdaten.
CIDR-Block Lokaler Entwicklungs-Laptop Verwenden der Notation IPv4/32
Durch Komma getrennte IP-Adressen Kleine Anzahl von lokalen Entwicklungs-Laptops, die über verschiedene LANs verbunden sind (mit unterschiedlichen öffentlichen IP-Adressen) Kann mit mehr als 10 Laptops mühsam zu verwalten sein.
CIDR-Block Lokale Entwicklungs-Laptops, die auf demselben Subnetz verbunden sind, das dem Internet ausgesetzt ist (jeder Laptop hat seine eigene öffentliche IP-Adresse) Verlassen Sie sich auf die CIDR-Blocknotation. Weitere Informationen finden Sie unter Rechner hier. Beispiel: 89.84.109.0/24 gibt 256 mögliche IP-Adressen von 89.84.109.0 bis 89.84.109.255 an
VCN mit CIDR-Block Für auf OCI gehostete Test-, Produktions- oder CI/CD-Pipeline mit eigenen VCN- und Compute-Instanzen Weisen Sie ein OCI-Compartment pro Umgebungstyp zu.
IP-Adresse und VCN mit CIDR-Block mischen Lokaler Entwicklungslaptop, der auf eine Test-Autonomous Database mit Verbindungen aus der Testumgebung oder CI/CD-Pipeline zugreift Eine allgemeine Konfigurationsoption für laufende Entwicklungsarbeiten.

MongoDB-API in Autonomous Database aktivieren

Nachdem Sie den Netzwerkzugriff für die Autonomous Database-Instanz konfiguriert haben, aktivieren Sie die MongDB-API.

So aktivieren Sie die MongoDB-API für eine vorhandene Instanz:

  1. Wählen Sie auf der Seite "Autonomous Database details" die Registerkarte Tool configuration aus.
  2. Klicken Sie auf Toolkonfiguration bearbeiten.
  3. Wählen Sie in der API-Zeile MongoDB die Option Tool aktivieren aus, um Aktiviert anzuzeigen.
  4. Klicken Sie auf Anwenden.

Der Lebenszyklusstatus ändert sich in "Aktualisieren", bis MongoDB aktiviert ist.

Sie können die MongoDB-API auch aktivieren, wenn Sie eine Instanz bereitstellen oder klonen, indem Sie Erweiterte Optionen anzeigen auswählen und die Registerkarte Extras auswählen.

Weitere Informationen finden Sie unter Integrierte Autonomous Database-Tools verwalten.

Benutzerverwaltung für MongoDB

Mit der Oracle Database API for MongoDB können Sie eine Oracle Autonomous Database als Datenspeicher verwenden. Wenn Sie zu diesem Zweck eine vorhandene Autonomous Database verwenden möchten, finden Sie hier den Workflow.

Oracle Database API for MongoDB ermöglicht die Zuordnung von Autonomous Database-Objekten zu MongoDB-Objekten wie folgt:

Objekt MongoDB Oracle Autonomous Database-Objekt
Datenbank Schema
Sammlung Tabelle
Dokument Dokument (in einer Spalte)

Beispiel: Sie können eine Collection mit der Oracle Database API for MongoDB wie folgt erstellen:

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

Eine Tabelle mit dem Namen FRUIT wird im Schema SCOTT erstellt.

Wenn Sie eine Verbindung zur Oracle Database API for MongoDB herstellen, authentifizieren Sie sich mit einem Autonomous Database-Benutzernamen und -Kennwort. Diese authentifizierte Verbindung greift dann auf Collections innerhalb des entsprechenden Schemas zu. Dieser Benutzer muss die folgenden Anforderungen erfüllen:

Hinweis

Die Rolle DWROLE in Autonomous Database enthält unter anderem diese Rollen.

Der Zugriff auf Schemas, die dem Benutzer nicht erteilt wurden, ist verboten. Beispiel: Der Benutzer SCOTT kann nur auf Collections im Schema SCOTT zugreifen. Es gibt eine Ausnahme. Wenn der authentifizierte Benutzer die Autonomous Database-Berechtigungen CREATE USER, ALTER USER und DROP USER hat, kann dieser Benutzer auf jedes ORDS-fähige Schema zugreifen.

Darüber hinaus kann ein Benutzer mit diesen Berechtigungen implizit Schemas erstellen. Das heißt, wenn der Benutzer eine Collection in einer Datenbank erstellt, die nicht vorhanden ist, wird das Schema automatisch erstellt. Weitere Informationen finden Sie unter Oracle Database API for MongoDB.

Test-Autonomous Database-Benutzer für MongoDB erstellen

Mit den folgenden Schritten erstellen Sie einen Testbenutzer mit den richtigen Rollen. Sie können auch Database Actions SQL oder andere SQL-Befehlszeilen-Utilitys verwenden, um die SQL-Anweisungen direkt auszuführen. Weitere Informationen finden Sie unter Benutzer in Autonomous Database erstellen - Verbindung mit einem Clienttool herstellen.
  1. Öffnen Sie die Oracle Cloud Infrastructure-Konsole für Ihre Autonomous Database.
  2. Wählen Sie Datenbankaktionen aus.
  3. Wählen Sie im Database Actions-Launchpad Administration > Datenbankbenutzer aus.
  4. Wählen Sie auf der Seite "Datenbankbenutzer" + Benutzer erstellen aus.
  5. Geben Sie einen Benutzernamen und ein Kennwort für den Testbenutzer ein. Wählen Sie Webzugriff aus, und legen Sie das Quota on Tablespace DATA fest.
  6. Wählen Sie die Registerkarte Erteilte Rollen aus.
  7. Wählen Sie zusätzlich zu den Standardrollen die Rolle SODA_APP für den Benutzer aus, und fügen Sie sie hinzu.
  8. Klicken Sie auf die Schaltfläche Benutzer erstellen.
Sie können diesen Benutzer oder einen ähnlich authentifizierten Benutzer zu Testzwecken verwenden. Weitere Informationen finden Sie unter Verbindung mit der Befehlszeile testen.

MongoDB-Anwendungen mit Autonomous Database verbinden

Je nach Ihren Anforderungen umfasst das Verbinden der MongoDB-Anwendung mit Autonomous Database mehrere Schritte.

Verbindungszeichenfolge für Autonomous Database MongoDB abrufen

Sie können die API-Verbindungszeichenfolge MongoDB aus der Oracle Cloud Infrastructure-Konsole abrufen.

Nachdem Sie die API-Verbindungszeichenfolge MongoDB abgerufen haben, können Sie mit der MongoDB Shell (einem Befehlszeilenutility) eine Verbindung herstellen und Ihre Daten abfragen.

Zuerst müssen Sie den Netzwerkzugriff konfigurieren und die MongoDB-API aktivieren. Weitere Informationen finden Sie unter Zugriff für MongoDB konfigurieren.

So rufen Sie die API-Verbindungszeichenfolge MongoDB ab:

  1. Wählen Sie auf der Seite "Autonomous Database details" die Registerkarte Tool configuration aus.
  2. Klicken Sie in der API-Zeile MongoDB unter "Zugriffs-URL" auf Kopieren.
Autonomous Database-Verbindungszeichenfolge aus Database Actions abrufen

Verwenden Sie die MongoDB Shell, ein Befehlszeilenutility, mit dem Sie eine Verbindung herstellen und Ihre Daten abfragen können.
  1. Sie können die Verbindungszeichenfolge für Ihre Autonomous Database-Instanz mit Database Actions abrufen.

    Weitere Informationen finden Sie unter Auf Database Actions als ADMIN zugreifen.

  2. Klicken Sie im Database Actions-Launchpad unter Zugehörige Services auf Oracle Database API for MongoDB.
  3. Klicken Sie auf der Seite Oracle Database API for MongoDB auf Kopieren.

Verbindung mit der Befehlszeile testen

  1. Melden Sie sich als Testbenutzer an. Weitere Informationen finden Sie unter Autonomous Database-Testbenutzer für MongoDB erstellen.
    $ 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
    > 
    Hinweis

    Verwenden Sie die prozentuale URI-Kodierung, um reservierte Zeichen in Ihrer Verbindungszeichenfolge-URI zu ersetzen – insbesondere Zeichen in Ihrem Benutzernamen und Kennwort. Dies sind die reservierten Zeichen und ihre Prozentcodierungen:

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

    Beispiel: Wenn Ihr Benutzername RUTH lautet und Ihr Kennwort @least1/2#? lautet, könnte die Verbindungszeichenfolge MongoDB für Server <server> wie folgt aussehen:

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

    Abhängig von den Tools oder Treibern, die Sie verwenden, können Sie einen Benutzernamen und ein Passwort als separate Parameter anstelle einer URI-Verbindungszeichenfolge angeben. In diesem Fall müssen Sie wahrscheinlich keine reservierten Zeichen codieren, die sie enthalten.

    Siehe auch:

  2. Erstellen Sie eine Sammlung, und fügen Sie Dokumente in Ihre Sammlung ein.
    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. Fragen Sie die Collection mit einem SQL-Client ab, wie Database Actions.
    SELECT
         f.json_document.name, 
         f.json_document.count, 
         f.json_document.color
    FROM fruit f;
    Beschreibung von database_actions_sql_for_mongodb_use.png folgt
    Beschreibung der Abbildung database_actions_sql_for_mongodb_use.png

Verbindung mit einer Node.js-Anwendung testen

  1. Laden Sie Node.js herunter. Wenn Sie Node.js für Ihre Umgebung bereits heruntergeladen oder installiert haben, können Sie diesen Schritt überspringen.
    $ wget https://nodejs.org/dist/latest-v14.x/node-v14.17.5-linux-x64.tar.xz
  2. Extrahieren Sie den Inhalt des Node,js-Archivs. Wenn Sie Node.js für Ihre Umgebung bereits heruntergeladen oder installiert haben, können Sie diesen Schritt überspringen.
    $ tar -xf node-v14.17.5-linux-x64.tar.xz
  3. Konfigurieren Sie die Umgebungsvariable PATH. Wenn Sie Node.js für Ihre Umgebung bereits heruntergeladen oder installiert haben, können Sie diesen Schritt überspringen.
    $ export PATH="`pwd`"/node-v14.17.5-linux-x64/bin:$PATH
  4. Testen Sie Ihre Verbindung mit einem Javascript-Beispiel.
    1. Neues Verzeichnis erstellen.
      $ mkdir autonomous_mongodb
      $ cd autonomous_mongodb
      $ npm init –y
    2. Installieren Sie die Mangodb-Abhängigkeit.
      $ npm install mongodb
    3. Erstellen Sie eine JavaScript-Anwendung namens 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);
      
      Hinweis

      Verwenden Sie die prozentuale URI-Kodierung, um reservierte Zeichen in Ihrer Verbindungszeichenfolge-URI zu ersetzen – insbesondere Zeichen in Ihrem Benutzernamen und Kennwort. Dies sind die reservierten Zeichen und ihre Prozentcodierungen:

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

      Beispiel: Wenn Ihr Benutzername RUTH lautet und Ihr Kennwort @least1/2#? lautet, könnte die Verbindungszeichenfolge MongoDB für Server <server> wie folgt aussehen:

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

      Abhängig von den Tools oder Treibern, die Sie verwenden, können Sie einen Benutzernamen und ein Passwort als separate Parameter anstelle einer URI-Verbindungszeichenfolge angeben. In diesem Fall müssen Sie wahrscheinlich keine reservierten Zeichen codieren, die sie enthalten.

      Siehe auch:

    4. Führen Sie das Beispiel aus. Die Ausgabe sollte der folgenden ähneln.
      $ node connect
      {
        _id: new ObjectId("611e3266005202371acf27c1"),
        title: 'Back to the Future',
        year: 1985,
        genres: [ 'Adventure', 'Comedy', 'Sci-Fi' ]
      }