MongoDB への接続方法

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

注釈

これは上級機能です

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

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

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

前提条件

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

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

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

databases:
  - openPort: true

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

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

Previously configured nodes may need to be stopped and restarted with the --upgrade argument in order to process the updated custom yml file:

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

警告

This will make the database accessible from the host's TCP port 27017 and it will be extremely vulnerable if this port is publicly exposed, so please be careful. This feature is only recommended for development purposes.

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