Oracle AI Database API for MongoDBの使用
Oracle AI Database API for MongoDBでは、MongoDB言語ドライバとツールを使用してOracle Autonomous AI Databaseに接続できます。
Oracle AI Database API for MongoDBは、Autonomous AI Databaseのコンバージド・データベース機能を活用して、JSONデータを含む複数のデータ型を単一のデータベース内で管理します。たとえば、これらのコンバージド・データベース機能を使用すると、SQLを使用してJSONデータを問い合せたり更新したりできます。
ノート
ノート: MongoDBでは、ACLを使用するようにネットワーク・アクセスを構成するか、Autonomous AI Databaseインスタンスのプライベート・エンドポイントを定義する必要があります。
詳細は、Oracle AI Database API for MongoDBを参照してください。
詳細は、Autonomous JSON Databaseについてを参照してください。
詳細は、Autonomous AIデータベースのワークロード・タイプについてを参照してください。
MongoDBへのアクセスの構成およびMongoDBの有効化
Oracle AI Database API for MongoDBでは、Oracle Autonomous AI Databaseをデータ・ストアとして使用できます。
MongoDB APIを使用するには、新しい自律型AIデータベースを作成および構成するか、既存の自律型AIデータベースの構成を変更できます。
ノート
ノート: MongoDBでは、ACLを使用するようにネットワーク・アクセスを構成するか、Autonomous AI Databaseインスタンスのプライベート・エンドポイントを定義する必要があります。ネットワーク・アクセスの構成に加えて、Autonomous AI DatabaseインスタンスでMongoDB APIを有効にする必要があります。
MongoDBへのアクセスの構成
MongoDB APIを使用するには、新しい自律型AIデータベースを作成および構成するか、ACLを構成するか、プライベート・エンドポイントを定義することで既存の自律型AIデータベースの構成を変更できます。
MongoDBの新しい自律型AIデータベースの構成
Autonomous AIデータベースのプロビジョニングまたはクローニングのステップに従って、ネットワーク・アクセス・タイプを選択します。

図adb_network_access_acl_provision.pngの説明
この時点で、Oracle AI Database API for MongoDBを使用するには、次のいずれかのネットワーク・アクセス・タイプを選択して構成することで、セキュアなアクセスを構成します:
-
許可されたIPおよびVCN限定のセキュア・アクセス
-
プライベート・エンドポイント・アクセスのみ
プライベート・エンドポイントを使用したAutonomous AI Databaseインスタンスの構成の詳細は、プライベート・エンドポイントを使用したネットワーク・アクセスの構成を参照してください。
MongoDBの既存のAutonomous AIデータベースの構成
自律型AIデータベース・インスタンスのOracle Cloud Infrastructure Consoleを開きます。

図adb_ajd_console_details.pngの説明
ノート
ノート: Oracle AI Database API for MongoDBを使用するには、ネットワークを構成し、アクセス・タイプが許可されたIPおよびVCNsからのセキュアなアクセスのみまたはプライベート・エンドポイント・アクセスのみのいずれかである必要があります。
アクセス・コントロール・リスト(ACL)の設定
詳細は、既存のAutonomous AIデータベース・インスタンスのアクセス制御リストの構成を参照してください。
IPアドレスのACLを構成するには、パブリックIPアドレスを取得する必要があります。パブリックIPアドレスを表示するには、いくつかの方法があります。
-
ネットワーク・アクセス領域の選択で、「IPアドレスの追加」をクリックします。これにより、IPアドレスが「値」フィールドにコピーされます。
-
VPNを無効にした後、WhatIsMyIP Webサイトを使用します。
-
VPNを無効にした後、curlコマンド
curl -s https://ifconfig.meを使用します。
ノート
ノート:パブリックIPアドレスは変更される可能性があります。パブリックIPアドレスを変更する場合は、ACLの変更が必要です。データベースにアクセスできない場合は、ACLがチェック対象である必要があります。
ACLのタイプとユースケース
| ACLタイプ | ユースケース | コメント |
|---|---|---|
| IPアドレス | 同じパブリックIPアドレスを共有するローカル開発ラップトップ | 最も簡単な開始方法。このLANに接続されているラップトップは、データベース資格証明を使用してデータベースにアクセスできます。 |
| CIDRブロック | ローカル開発用ノートパソコン | IPv4/32表記法の使用 |
| カンマで区切られたIPアドレス | 個別のLANに接続された少数のローカル開発ラップトップ(個別のパブリックIPアドレスを持つ) | 10以上のラップトップで管理するのは面倒です。 |
| CIDRブロック | インターネットに公開されている同じサブネットに接続されたローカル開発ラップトップ(各ラップトップには独自のパブリックIPアドレスがあります) | CIDRブロック表記に依存します。詳細は、calculator hereを参照してください。例: 89.84.109.0/24は 89.84.109.0から 89.84.109.255までの256個のIPアドレスを提供します。 |
| CIDRブロックを含むVCN | 独自のVCNおよびコンピュート・インスタンスを持つOCIでホストされているテスト、本番、またはCI/CDパイプライン用 | 環境タイプごとにOCIコンパートメントを割り当てます。 |
| IPアドレスおよびVCNとCIDRブロックの混合 | テスト環境またはCI/CDパイプラインからの接続を使用してテスト自律型AIデータベースにアクセスするローカル開発ラップトップ | 継続的な開発作業のための共通構成オプション。 |
自律型AIデータベースでのMongoDB APIの有効化
Autonomous AI Databaseインスタンスのネットワーク・アクセスを構成したら、MongDB APIを有効にします。
既存のインスタンスに対してMongoDB APIを有効にするには:
-
Autonomous AI Databaseの詳細ページで、「ツール構成」タブを選択します。
-
「ツール構成の編集」をクリックします。
-
MongoDB API行で、「ツールの有効化」列を選択して「有効」を表示します。
-
「適用」をクリックします
MongoDBが有効になるまで、ライフサイクル状態は更新に変更されます。
「拡張オプションの表示」を選択し、「ツール」タブを選択して、インスタンスをプロビジョニングまたはクローニングするときにMongoDB APIを有効にすることもできます。
詳細は、Autonomous AI Database組込みツールの管理を参照してください。
MongoDBのユーザー管理
Oracle AI Database API for MongoDBでは、Oracle Autonomous AI Databaseをデータ・ストアとして使用できます。既存のAutonomous AI Databaseをこの目的で使用する場合は、ワークフローは次のとおりです。
Oracle AI Database API for MongoDBでは、次のようにAutonomous AI DatabaseオブジェクトをMongoDBオブジェクトにマッピングできます:
| MongoDBオブジェクト | Oracle Autonomous AI Databaseオブジェクト |
|---|---|
| データベース | スキーマ |
| コレクション | テーブル |
| ドキュメント | ドキュメント(列) |
たとえば、次のようにOracle AI Database API for MongoDBを使用してコレクションを作成できます。
use scott;
db.createCollection('fruit');FRUITという名前の表がスキーマSCOTTに作成されます。
Oracle AI Database API for MongoDBに接続する場合、Autonomous AI Databaseのユーザー名とパスワードを使用して認証します。この認証済接続は、対応するスキーマ内のコレクションにアクセスします。このユーザーは、次の要件を満たす必要があります。
-
ユーザーのスキーマはORDS対応である必要があり、これはWebアクセスに対して有効と呼ばれることもあります。詳細は、ORDSデータベースAPIを有効化するための基本設定を参照してください。
-
ユーザーには、
SODA_APP、CREATE TABLEおよびCREATE SESSIONのロールおよび権限が必要です。詳細は、Autonomous AI Databaseでのユーザー・ロールおよび権限の管理を参照してください。 -
ユーザーには表領域DATAで使用可能な割当て制限があります。詳細は、Autonomous AI Databaseでのユーザーの作成および管理を参照してください。
-
パラレル索引の自動作成を利用するには、パッケージ
CS_SESSIONに対する権限EXECUTEがユーザーに付与されている必要があります。それ以外の場合は、索引がシリアルに作成されます。詳細は、「CS_SESSIONパッケージ」を参照してください。
ノート
ノート: Autonomous AI DatabaseのロールDWROLEには、これらのロールなどが含まれます。
ユーザーに付与されていないスキーマへのアクセスは禁止されています。たとえば、ユーザーSCOTTは、スキーマSCOTTのコレクションにのみアクセスできます。例外が1つあります。認証されたユーザーにAutonomous AI Database権限CREATE USER、ALTER USERおよびDROP USERがある場合、そのユーザーは任意のORDS対応スキーマにアクセスできます。
また、これらの権限を持つユーザーは、スキーマを暗黙的に作成できます。つまり、ユーザーが存在しないデータベースにコレクションを作成すると、スキーマが自動的に作成されます。詳細は、Oracle AI Database API for MongoDBを参照してください。
MongoDB用のテストAutonomous AIデータベース・ユーザーの作成
この後のステップでは、データベース・アクションを使用して、適切なロールを持つテスト・ユーザーを作成します。また、Database ActionsのSQLまたは他のSQLコマンドライン・ユーティリティを使用して、SQL文を直接実行することもできます。詳細は、Autonomous AI Databaseでのユーザーの作成- クライアント・ツールを使用した接続を参照してください。
-
自律型AIデータベース用のOracle Cloud Infrastructure Consoleを開きます。
-
「データベース・アクション」を選択します。
-
データベース・アクションの起動パッドから、「管理」→「データベース・ユーザー」を選択します。
-
「データベース・ユーザー」ページで「+ユーザーの作成」を選択します。
-
テスト・ユーザーの「ユーザー名」およびパスワードを入力します。「Webアクセス」を選択し、表領域DATAの割当て制限を設定します。

-
「付与されたロール」タブを選択します。
-
デフォルト・ロールに加えて、ユーザーの
SODA_APPロールを選択して追加します。
-
「ユーザーの作成」ボタンを選択します。
テスト目的で、このユーザーまたは同様に認証されたユーザーを使用できます。詳細は、コマンドラインを使用した接続のテストを参照してください。
MongoDBアプリケーションをAutonomous AI Databaseに接続
MongoDBアプリケーションをAutonomous AI Databaseに接続するには、要件に応じていくつかのステップがあります。
Autonomous AI Database MongoDB接続文字列の取得
MongoDB API接続文字列は、Oracle Cloud Infrastructure Consoleから取得できます。
MongoDB API接続文字列を取得したら、コマンドライン・ユーティリティであるMongoDBシェルを使用して、データを接続および問合せできます。
まず、ネットワーク・アクセスを構成し、MongoDB APIを有効にする必要があります。詳細は、MongoDBのアクセスの構成を参照してください。
MongoDB API接続文字列を取得するには:
-
Autonomous AI Databaseの詳細ページで、「ツール構成」タブを選択します。
-
MongoDB API行の「Access URL」で、「Copy」をクリックします。

データベース・アクションからのAutonomous AI Database接続文字列の取得
データの接続および問合せに使用されるコマンドライン・ユーティリティであるMongoDBシェルを使用します。
-
データベース・アクションを使用して、Autonomous AI Databaseインスタンスの接続文字列を取得できます。
詳細は、ADMINとしてのデータベース・アクションへのアクセスを参照してください。
-
「Database Actions Launchpad」の「関連サービス」で、「Oracle AI Database API for MongoDB」をクリックします。
-
Oracle AI Database API for MongoDBページで、「コピー」をクリックします。
コマンドラインを使用した接続のテスト
-
テスト・ユーザーでログインします。詳細は、MongoDB用のAutonomous AI Databaseテスト・ユーザーの作成を参照してください。
$ 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** >URIパーセント・エンコーディングを使用して、接続ストリングURI (特にユーザー名とパスワードの文字)の任意の予約文字を置換します。予約文字とそのパーセント・エンコーディングは次のとおりです。
文字 パーセント・エンコーディング !%21#%23$%24%%25&%26'%27(%28)%29*%2A+%2B,%2C/%2F:%3A;%3B=%3D?%3F@%40[%5B]%5Dたとえば、ユーザー名が
RUTHで、パスワードが@least1/2#?の場合、サーバー<server>へのMongoDB接続文字列は次のようになります。'mongodb://RUTH:**%40**least1**%2F**2**%23****%3F**@*<server>*:27017/ruth/ ...'使用するツールまたはドライバによっては、URI接続文字列の一部としてではなく、別のパラメータとしてユーザー名とパスワードを指定できる場合があります。その場合、含まれている予約文字をエンコードする必要はありません。
詳細は、Percent Encoding - Reserved CharactersおよびUniform Resource Identifier (URI): Generic Syntaxを参照してください。
- コレクションを作成し、コレクションにドキュメントを挿入します。
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> - データベース・アクションなどのSQLクライアントを使用してコレクションを問い合せます。
SELECT f.json_document.name, f.json_document.count, f.json_document.color FROM fruit f;
Node.jsアプリケーションを使用した接続のテスト
-
Node.jsをダウンロードします。ご使用の環境にNode.jsをすでにダウンロードまたはインストールしている場合は、このステップをスキップできます。
$ wget https://nodejs.org/dist/latest-v14.x/node-v14.17.5-linux-x64.tar.xz -
Node、jsアーカイブの内容を抽出します。ご使用の環境にNode.jsをすでにダウンロードまたはインストールしている場合は、このステップをスキップできます。
$ tar -xf node-v14.17.5-linux-x64.tar.xz PATH環境変数を構成します。ご使用の環境のNode.jsをすでにダウンロードまたはインストールしている場合は、このステップをスキップできます。$ export PATH="`pwd`"/node-v14.17.5-linux-x64/bin:$PATH-
Javascriptの例を使用して接続をテストします。
- 新規ディレクトリを作成
$ mkdir autonomous_mongodb $ cd autonomous_mongodb $ npm init -y - mongodb依存関係をインストールします。
$ npm install mongodb connect.jsという名前のJavaScriptアプリケーションを作成します。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);URIパーセント・エンコーディングを使用して、接続ストリングURI (特にユーザー名とパスワードの文字)の任意の予約文字を置換します。予約文字とそのパーセント・エンコーディングは次のとおりです。
文字 パーセント・エンコーディング !%21#%23$%24%%25&%26'%27(%28)%29*%2A+%2B,%2C/%2F:%3A;%3B=%3D?%3F@%40[%5B]%5Dたとえば、ユーザー名が
RUTHで、パスワードが@least1/2#?の場合、サーバー<server>へのMongoDB接続文字列は次のようになります。'mongodb://RUTH:**%40**least1**%2F**2**%23****%3F**@*<server>*:27017/ruth/ ...'使用するツールまたはドライバによっては、URI接続文字列の一部としてではなく、別のパラメータとしてユーザー名とパスワードを指定できる場合があります。その場合、含まれている予約文字をエンコードする必要はありません。
詳細は、Percent Encoding - Reserved CharactersおよびUniform Resource Identifier (URI): Generic Syntaxを参照してください。
- 例を実行します。出力は次のようになります。
$ node connect { _id: new ObjectId("611e3266005202371acf27c1"), title: 'Back to the Future', year: 1985, genres: [ 'Adventure', 'Comedy', 'Sci-Fi' ] }
- 新規ディレクトリを作成