【閑話】MongoDBをjsonエディターにしてみる

表題とおりですが、MongoDBをjsonのエディターに出来ないだろうか……?という事で試してみました。

 

背景

先日、知人がTwitterでjsonを汎用的に触れるツールが無いか……とつぶやいていたのが目につきました。

jsonはテキストでお手軽にできるのであまりそういうのする人いなさそうな割に、構文ちょっとミスるとダメだったりなのであると需要はありそうと。

そしてjsonと言えばやっぱりJavaScriptかNoSQLの類か……とりわけMongoDBは入出力がjsonちっくだったなーと思い至り、MongoDBはどうかと提案しました。

提案するだけだと少し悪いので、実際自分でも試してみました。

 

環境を作る

まずは環境を作ります。

用意するのは以下2点

  • MongoDB Server
  • Compass

この2つが必要ですが、この2つを同じPCに入れる必要はありません。

サーバー用意してMongoDBを入れれば複数人で……ということもできます。

※ただ、ファイアウォールの設定とかセキュリティとか面倒ですが……

今回はWindows PC1台で自分用という想定で記事を書いていきます。

MognoDB Serverとは

データを保存するDBの本体です。

 

この記事を書いている当時では、Windows 7以降の64bitでインストールできます。32bitはダメなようです。

 

Compassとは

DBの中身を操作するGUIのクライアントツール。

 

MongoDBをインストールすると一緒についてきます。

 

インストールする

公式サイトのDwonloadからMongoDB Community Serverというのをダウンロードしてインストールします。(※URLは変わっているかもしれません。)

 

ダウンロードの際にメールアドレスとかいろいろ聞かれますが、入力はしなくても良いようです。

 

インストーラがダウンロード出来たら、起動してインストールします。

 

といっても、起動したらCompleteを選んでOKすれば終わります。特に難しい点はないです。

※Compassのインストールが全然終わらないことがあるっぽいです。

その場合はCompassだけ別でインストールした方が良いです。

(公式サイトのDownloadにあります。こちらはメールアドレスとか必須のようです。

終わらないインストーラはタスクマネージャから3つほどWindows Winstallerがあるので全て終了させてください。)

MongoDB サーバーを起動する

インストールが終わったらデータを保存する為にDBサーバーを起動します。(サービスに登録とかもあるようですが、とりあえずコマンドプロンプトで)

 

まず、MongoDBのデータを保存するフォルダを用意します。

場所はどこでもよいですが、Program Filesとかにすると権限が無くてエラーとなってしまうので気を付けてください。

この記事では E:\mongodbdata というフォルダを用意したとして記事を書いていきます。

このフォルダ内にさらに2つのフォルダ「data」と「logs」を用意します。

 

次に以下のテキストファイルをMongoDBをインストーラした場所に保存します。

use admin;
db.shutdownServer();
quit();

ファイル名はquitmongo.txtにします。

 

次に以下のテキストファイルを好きな場所に保存します。

rem =========================================

rem == DBに作ったデータの保存先 ==
set DATAPATH="E:\mongodbdata"

rem == MONGODBのインストール先 ==
set MONGOPATH="C:\Program Files\MongoDB\Server\3.6\bin"

rem == COMPASSのインストール先 ==
set COMPASSPATH="%USERPROFILE%\AppData\Local\MongoDBCompassCommunity\app-1.11.1\MongoDBCompassCommunity.exe"

rem == mongodbを終了させるスクリプトのパス ==
set QUITSCRIPT="quitmongo.txt"

rem =========================================

rem == 処理実行 ==
pushd %MONGOPATH%

rem mongodb起動
start mongod.exe --dbpath %DATAPATH%\data --logpath %DATAPATH%\logs\mongo.log

rem compass起動
%COMPASSPATH%

rem mongodb終了
mongo < %QUITSCRIPT%
popd

 

ファイル名はrunmongo.cmdにします。(拡張子が.cmdならなんでもよいですが。)

※文字コードはShiftJISにしてください。

 

このバッチファイルでは、「MongoDBの起動」 → 「Compassの起動」 →  作業終わってCompass閉じる → 「MongoDB終了」という処理を行っています。

 

大丈夫だとは思いますが、上の方のset なんたら~の部分は各々書き換えてください。

 

※COMPASSPATHだけは注意が必要です。アプリの終了が検知できないので、Compassのインストールフォルダの直下にあるexeではなくその中のアプリケーションフォルダの中のexeを指定しください。

 

用意出来たらrunmongo.cmdをダブルクリックして起動します。

黒画面が二つとCompassが立ち上がります。

 

※黒画面が1つしかない場合は設定が間違っていますので、インストールパスとかを再確認してください。

 

Compassでデータを作る

無事起動したらCompassでデータを作ります。

 

Compassの起動画面はそのままConnectでDBに接続されます。

 

まず簡単に用語解説

 

Database

データを保存する大枠です。

Excelに例えるならエクセルファイルです。

 

Collection

データのグループ分けをする区分です。

Excelに例えるならシートです。

 

Document

実際のデータです。これがjsonになります。

Excelに例えるなら表組です。

 

DatabaseとCollectionを用意する

ではまず、データを入れるスペースを準備します。

 

Create Databaseでデータベースを作ります。

名前は好きなもので良いです。

ボタンを押すとリストに追加されるので開きます。

 

データ追加

ではjsonにしたいデータを追加します。

 

Insert Documentを選択するとダイアログがひらきます。特に何も入力しなくても良いのでInsertします。

完成したら_idというのだけが入ったデータが出来ます。

データ編集

データを編集する際は右側に鉛筆マークがあるのでそれを選択します。

左側の+から列のデータの追加が出来ます。

フィールド名と値を入力できます。

右側の▼からデータの種類を選択できます。

Objectの入れ子もできます。

最後に右下UPDATEで変更内容が確定します。

また、中段INSERT DOCUMENTの右のTABLEを選択すると見た目がjsonっぽいのから表組形式に変わります。

TABLE表示ではObjectが入れ子になっている場合は赤四角の矢印を押す事で詳細が見られます。

また、この画面でも同様に右端の鉛筆マークから編集が可能です。

 

json出力

jsonが欲しいときは右端の書類マークを押すとクリップボードにコピーされます。

あとは適当なテキストファイルとかにペーストすれば完了です。

{"_id":"5a2a960e98801b04a8ed16e0","Field":"String Field","IntField":12345,"ObjectField":{"InnerField":"Value"}}

 

まとめ

おもったよりかは使えそうな感があります。

本来のMongoDBはObjectId()とかの独自構文をjsonに差し込んでくるのですが、このコピーボタンではその辺省いてくれているのが良い感じです。

 

そのほかバックアップとかの取り方はググればいろいろあるのでそちらを参考に。

タイトルとURLをコピーしました