MongoDB への接続方法

あなたの API ノードの MongoDB インスタンスへ接続する方法の学習

注釈

これは上級機能です

REST ゲートウェイ は幅広いエンドポイントを提供しているので、API ノードの内部データベースに直接接続する必要はありません。

しかし、新規に Symbol のプラグインを開発している場合や広範なブロックチェーンデータを分析している場合は デバッグ目的 で MongoDB に直接接続する必要があるかもしれません。

このガイドのでは、API ノードデータベースインスタンスに接続し、いくつかの基本的なクエリを実行します。

前提条件

データベースのポートを開く

テストネットノードの起動 ガイドでは symbol-bootstrap を使用して、必要なノードサービス (catapult-server, API エンドポイント, データベースなど) をインスタンス化して実行しました。セキュリティ上の理由から、これらのサービスはすべて Docker コンテナー内で実行され、パブリックエンドポイントを除いて、外部からは分離されています。

これは API ノードがブロックチェーンの状態をキャッシュするために使用する MongoDB データベースへ デフォルトではアクセスできない ことを意味します。内部ポートをホストに転送するには symbol-bootstrap に次の行を含む ``カスタムプリセットファイル <symbol-bootstrap-presets>`_ `を指定します。

databases:
  - openPort: true

そして symbol-bootstrap で構成する際に、このファイルを使用します。例:

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

これにより、データベースの TCP ポート 27017 がホストからアクセスできるようになるので注意してください。この機能は 開発目的 でのみ使用してください。

Robo 3T のインストール

このチュートリアルでは Robo 3T (前 RoboMongo) を使用します。データベースと対話する、クロスプラットフォームの MongoDB 管理ツールです。

  1. Robo 3T を ここ からダウンロードします。
  2. インストーラを開き、手順に従います。

問題がある場合は 公式のインストールガイド に従います。

新しいコネクションの作成

  1. Robo 3T を起動したら、 「Create」 リンクをクリックして新しい接続を追加します。
../../_images/robo3t-open.png
  1. 「Connection」 タブで次の詳細を入力します。
../../_images/robo3t-connection.png
  • Type: 直接接続
  • Name: my-node
  • Address: localhost
  • Port: 27017
  1. ノードがローカルで動作している場合は、 「Connect」 をクリックして、次のセクション Querying MongoDB へ進んでください。
  2. または、 virtual private server (VPS) 上でノードが動作している場合は、あなたのコンピュータとサーバ間にトンネルを通してください。

SSH tab へ移動しサーバの詳細を追加します:

../../_images/robo3t-tunnel.png

SSH Address, username, authentication を置き換えてください。

  1. 「Connect」 をクリックすると 「catapult」 と名付けられたデータベース配下に MongoDB のコレクションが確認できます。

MongoDB でのクエリ実行

注釈

このメソッドはデータベースから読み取るためにのみ使用します。MongoDB でドキュメントを直接変更しないでください。

  1. 左側のサイドバーからクエリを実行するコレクションを開きます。
../../_images/robo3t-collection.png

2. In most cases, you may want to filter a set of entries by one of its attributes. To filter, for example, a given transaction type, write a query with the following format on Robo 3T shell:

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

より応用的なクエリを実行するには Robo3T ドキュメントを参照してください。

  1. クエリを実行するために 「Play」 ボタンをクリックします。
../../_images/robo3t-query.png