A certain engineer "COMPLEX"

.NETでNoSQLを試してみる MongoDB編 第3回

前回はデータを追加してみました。今回はデータを確認したいと思います。

Introduction


RDBMSとは勝手が違うのがNoSQLですが、思った以上にやっかいです。既存の概念が通じません。
というか、データを見たいのに、未だに追加したデータのフィールド名すら見れません。なので、可視化ツールを導入したいと思います。

公式ページAdmin UIsによると、たくさんツールがあります。
mongo-express ってのがかっこいいですのでこれにします。
MongoHub が一番いいのですが、MacOX用...インストール先がWindows10なので...いちいちMacにつなげなおしたり、リモートで入りなおすのも面倒だし。

Explanation


インストール

公式サイト によると、


npm install mongo-express

または


npm install -g mongo-express

でインストールできるって言っています。

(-ω- ?) npm って何?Linux?

調べました。
hashrock様のフロントエンド開発の3ステップ(npmことはじめ) によれば、

npm installは、npmリポジトリからライブラリをダウンロードしてくるコマンドです。

とあります。Nugetみたいなもんか。
というか、Node.js ってことはJavaScript。そんな環境ない、と思いました。そもそもJavaScriptなんて、ちょっとしか触ったことないです。

でも、ひらめいた。そういやVisual Studio 2015インストールするとき、そんなのあった気が。

nodejs

おるでーーー^o^

素敵やん。

もうちょい調べたところ。npm使うと、グローバルとローカルでパッケージを分けることができるよう。
unageanu様のnpmの基本的な使い方まとめによれば、

  • ローカルインストール
    • 開発中のアプリが依存するライブラリをインストールする場合に利用します。
    • インストールしたモジュールは、プロジェクト内のみで使えます。
      • 同じマシンで開発している他のプロジェクトからは使えないので、それぞれで別のバージョンを使用したりできます。
      • モジュールは、/node_modules にインストールされます。
  • グローバルインストール
    • grunt のような、マシン全体で共有できるツールやライブラリをインストールする場合はこちら。
    • インストールしたモジュールは、マシン全体で共有されます。
  • とのこと。今回はローカルかな。
    管理者権限でコマンドプロンプトたちあげて、


    cd c:\Program Files\MongoDB
    npm install mongo-express

    できたー!、というのは嘘。
    エラーいっぱい出た。


    npm WARN peerDependencies The peer dependency kerberos@~0.0 included from mongodb-core will no
    npm WARN peerDependencies longer be automatically installed to fulfill the peerDependency
    npm WARN peerDependencies in npm 3+. Your application will need to depend on it explicitly.
    /
    > kerberos@0.0.17 install C:\Program Files\MongoDB\node_modules\mongo-express\node_modules\mongodb\node_modules\kerberos
    > (node-gyp rebuild) || (exit 0)

    C:\Program Files\MongoDB\node_modules\mongo-express\node_modules\mongodb\node_modules\kerberos>if not defined npm_config_node_gyp (node "C:\Program Files (x86)\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild ) else (rebuild)
    gyp ERR! configure error
    gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.
    gyp ERR! stack at failNoPython (C:\Program Files (x86)\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js:103:14)
    gyp ERR! stack at C:\Program Files (x86)\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js:64:11
    gyp ERR! stack at FSReqWrap.oncomplete (evalmachine.<anonymous>:95:15)
    gyp ERR! System Windows_NT 6.3.9600
    gyp ERR! command "node" "C:\\Program Files (x86)\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
    gyp ERR! cwd C:\Program Files\MongoDB\node_modules\mongo-express\node_modules\mongodb\node_modules\kerberos
    gyp ERR! node -v v0.12.2
    gyp ERR! node-gyp -v v1.0.3
    gyp ERR! not ok
    mongo-express@0.28.8 node_modules\mongo-express
    ├── basic-auth-connect@1.0.0
    ├── async@1.4.2
    ├── consolidate@0.12.1
    ├── underscore@1.8.3
    ├── cookie-parser@1.4.0 (cookie-signature@1.0.6, cookie@0.2.2)
    ├── commander@2.9.0 (graceful-readlink@1.0.1)
    ├── serve-favicon@2.3.0 (fresh@0.3.0, ms@0.7.1, etag@1.7.0, parseurl@1.3.0)
    ├── morgan@1.6.1 (on-headers@1.0.1, basic-auth@1.0.3, depd@1.0.1, debug@2.2.0, on-finished@2.3.0)
    ├── method-override@2.3.5 (methods@1.1.1, vary@1.0.1, parseurl@1.3.0, debug@2.2.0)
    ├── express-session@1.11.3 (cookie-signature@1.0.6, on-headers@1.0.1, cookie@0.1.3, utils-merge@1.0.0, parseurl@1.3.0, depd@1.0.1, crc@3.3.0, debug@2.2.0, uid-safe@2.0.0)
    ├── errorhandler@1.4.2 (escape-html@1.0.2, accepts@1.2.13)
    ├── body-parser@1.14.0 (bytes@2.1.0, content-type@1.0.1, depd@1.1.0, on-finished@2.3.0, debug@2.2.0, http-errors@1.3.1, qs@5.1.0, iconv-lite@0.4.11, type-is@1.6.10, raw-body@2.1.5)
    ├── express@4.13.3 (escape-html@1.0.2, cookie@0.1.3, merge-descriptors@1.0.0, methods@1.1.1, utils-merge@1.0.0, cookie-signature@1.0.6, array-flatten@1.1.1, fresh@0.3.0, vary@1.0.1, etag@1.7.0, content-type@1.0.1, range-parser@1.0.3, parseurl@1.3.0, path-to-regexp@0.1.7, serve-static@1.10.0, content-disposition@0.5.0, depd@1.0.1, on-finished@2.3.0, finalhandler@0.4.0, debug@2.2.0, qs@4.0.0, proxy-addr@1.0.10, type-is@1.6.10, accepts@1.2.13, send@0.13.0)
    ├── swig@1.4.2 (optimist@0.6.1, uglify-js@2.4.24)
    ├── mongodb@2.1.2 (es6-promise@3.0.2, readable-stream@1.0.31, kerberos@0.0.17, mongodb-core@1.2.30)
    └── cli-color@1.1.0 (ansi-regex@2.0.0, d@0.1.1, es6-iterator@2.0.0, timers-ext@0.1.0, memoizee@0.3.9, es5-ext@0.10.11)

    Python がいるのか。コマンドプロンプトで Python --version っていっても出ないから入ってないのだろう。
    3.5.1公式ページからダウンロードしてくる。
    インストール後、一度コマンドプロンプトを再起動 (環境変数の反映) して、一度、


    npm -r mongo-express

    で削除してから、もう一度実行してみる。
    でもだめー。
    どうも、gyp とかいうのが、2.5.0以上3.0未満でないとダメって言ってる。面倒な。3.5.1 を削除、2.7.11 をダウンロードして再インストールする。
    あ、パスは手動で通すのね、2.7の場合。

    次はワーニングとか出たけど、通った。

    で、次は設定がいるのね。公式ページ

    To configure:
    Copy YOUR_PATH/node_modules/mongo-express/config.default.js into a new file called YOUR_PATH/node_modules/mongo-express/config.js.


    訳:
    YOUR_PATH/node_modules/mongo-express/config.default.jsをYOUR_PATH/node_modules/mongo-express/config.jsという名前でコピーしろ

    とあるので、従う。
    実行は、

    cd YOUR_PATH/node_modules/mongo-express/ && node app.js

    とあるので試してみる。たぶん、この&&は間違いだろうと思うが。
    実行すると、ファイヤーウォールの警告が出るので、適宜許可。


    c:\Program Files\MongoDB\node_modules\mongo-express>node app.js
    basicAuth credentials are "admin:pass", it is recommended you change this in your config.js!
    Mongo Express server listening on port 8081 at 0.0.0.0
    Database connected
    Admin Database connected

    どうやら、8081ポートで動いているよう。アクセスしてみる。

    認証

    認証画面が出るので、先の警告の通りデフォルトのユーザ名とパスを入れてみる。
    無事に認証が通り、ページが表示されました。OK。

    mongo express

    データを確認

    ようやくインストールが終わりました。パスワード設定とかは次回に....
    画面左の View Database でデータベースが見れるよう。

    次のデータベース名が出るのでそこをクリック。
    すると、よくわからない記号の羅列がでてくるので、そこをクリックすると、見えました。

    中身の確認

    よしよし。

    Conclusion


    よーやくデータが見えるようになりました。
    けど、mongo expressは使いやすい感じです。
    また、思わぬところでnpmを使うことになり、少しレベルアップした感じです。
    次は、パスワードの設定を。

    コメントを残す

    メールアドレスが公開されることはありません。

    %d人のブロガーが「いいね」をつけました。