Asteria WarpとMongoDBの連携:ドキュメントの登録・取得方法

はじめに

Asteria WarpとMongoDBを連携させ、ドキュメント(MySQLでのレコードに相当)の登録・取得を行うフローの作成手順を解説します。本記事では、具体的な設定方法を段階的に説明します。

フロー作成前の準備

MongoDB Javaドライバーの導入

MongoDBのJavaドライバー(下図では「mongo-java-driver-3.12.14.jar」)を入手して、導入します。
フローデザイナーから「ツール(T)」→「外部ライブラリの追加・削除」で「system/lib/drivers」にJavaドライバーをアップロードします。

Javaドライバーの追加

MongoDBコネクションの作成

フローの実行に必要なMongoDBとのコネクションを前もって作成します。

MongoDBのJavaドライバーの導入が終わったら、以下の手順で作成します。

  1. フローデザイナー画面の左下にある「コネクション」タブから「コネクションの作成」アイコンを押します。
  2. 「コネクションの作成」ダイアログで接続種別を「MongoDB」に設定して、任意の名前を設定します。
  3. 「コネクション」タブに2.で設定した名前のコネクションがMongoDBの下に作成されるので、これをクリックします。
  4. フローデザイナー画面の右上で、コネクションのプロパティを作成します。設定する項目は
    ホスト:MongoDBへ接続するときのホスト(例:自分の環境にあるなら「localhost」)
    ポート番号:MongoDBへ接続するときのポート番号(例:デフォルト設定では「27017」)
    ユーザー名とパスワード:設定していないなら空欄で大丈夫です
    ユーザーデータベース名:接続するMongoDBのデータベース名

フローデザイナー上での操作は下図の矢印の順番にで進みます。

コネクション作成の手順

また、今回レコードの登録・取得を行う場所は下図のMongoDB_TestCollectionです。(下図ではMongoDB Compassを使用して確認しています)

MongoDB Compassで確認したフロー実行前の状態

フローの作成

MongoDBにドキュメントを登録するフロー

フローの全体図(ドキュメントを登録するフロー)

MongoDBにドキュメントを登録するフローの全体は下図の通りになります。
フロー変数をマッパーでJSON形式に変換して、MongoDBPutでMongoDBに登録します。

ドキュメントを取得するフローの全体図

フロー変数は以下の2つを使用して、フロー開始時に値を設定します。

使用するフロー変数

フロー解説(ドキュメントを登録するフロー)

マッパー

フロー変数の値をJSON形式に変換してストリームに流しています。
※ストリーム型をJSONにしています。

マッパーの設定
MongoDBPut

プロパティを以下のように設定しています。

  • コネクションを使用:「はい」
  • コネクション名:(記事冒頭で作成したコネクションを使用します)
  • データベース名:ドキュメントを追加したいデータベース名
  • コレクション名:ドキュメントを追加したいコレクション名(コレクションはデータベースの下に存在します)
MongoDBPutのプロパティ

実行結果(ドキュメントを登録するフロー)

フロー変数に下図の値を設定してフローを実行しました。

フロー実行前
フロー実行後

フロー変数として設定した値がドキュメントとして登録されていることが確認できました。

フロー実行後にドキュメントが追加された

MongoDBからドキュメントを取得するフロー

フローの全体図(ドキュメントを取得するフロー)

MongoDBからドキュメントを取得するフローの全体は下図の通りになります。
開始と終了以外はMongoDBGetのみで構成されており、これだけでMongoDBから値を取得できます。

ドキュメントを取得するフローの全体図

フロー解説(ドキュメントを取得するフロー)

MongoDBGet

MongoDBPutと同様に使用するコネクションとMongoDBでの接続先を設定します。加えて、ドキュメントを取得する際の条件である「クエリー」を設定しています。現段階でMongoDB側には「number:2,name:SamplePerson」と「number:4,name:AddPerson」の2つがドキュメントとして存在しているので、これらを両方とも取得できるクエリーを設定します。登録されているドキュメントの画像は「ドキュメントを登録するフロー」最後の画像(MongoDB Compassの画像)を確認してください。

  • コネクションを使用:「はい」
  • コネクション名:(記事冒頭で作成したコネクションを使用します)(MongoDBPutで使用したコネクションと同一です)
  • データベース名:ドキュメントを追加したいデータベース名
  • コレクション名:ドキュメントを追加したいコレクション名(コレクションはデータベースの下に存在します)
  • クエリー:ドキュメントを取得する際の条件として設定したいクエリー
    今回は{ number: { $gte: 2, $lte: 4 } }なのでnumberの値が2以上4以下の条件で取得される。($gteが「以上」、$lteが「以下」)
MongoDBGetのプロパティ

実行結果(ドキュメントを取得するフロー)

number が 2 と 4 のドキュメントが取得され、設定したクエリーの条件と一致する範囲でデータが正しく取得されたことを確認しました。
(「実行結果(ドキュメントを登録するフロー)」最後の画像(MongoDB Compassの画像)で存在している2つのドキュメントが取得できています)

フロー実行後