MongoDBをインストールしてみた
こんにちは、鬱太郎です。先日Twitterのユーザー情報からフォロワーについて調べてみました。
その時に、フォロワーを5000人だけでなくすべてのデータを取得してみようと思いました。そのためにはデータベースを使う必要があります。どんなデータベースがあるのかを色々と調べて、MongoDBを使う事を決めました。
今日はそのMongoDBのインストール方法についてご紹介したいと思います。
MongoDBとは
MongoDBはNoSQLデータベースの一つです。RDBMS(MySQLやPostgreSQL)のようにあらかじめ、データの形式を決めておく必要がありません。またJSON形式を取り扱うことが容易です。
MongoDBはRDBMSではなく、いわゆるNoSQLと呼ばれるデータベースに分類されるものである。RDBMSのようにレコードをテーブルに格納するのではなく、「ドキュメント」と呼ばれる構造的データをJSONライクな形式で表現し、そのドキュメントの集合を「コレクション」として管理する(このデータの物理的な格納はBSONと呼ばれるJSONのバイナリ版といえる形式で行われる)。コレクションはRDBMSのような固定的なスキーマを持たない。ドキュメントには複雑な階層構造を持たせることもでき、それらの構造に含まれるフィールドを指定したクエリやインデクス生成も簡単な指定によって行える。RDBMSのように高度な結合操作を効率的に行うことはできないが、データの追加・更新・削除・クエリは高速に行うことができる。また、アプリケーションは自身の構造やデータ型に合った自然な形でデータを格納することができるため、扱うデータの特性によっては、RDBMSよりも容易かつ迅速に開発を行える可能性がある。
MongoDBを選んだ理由
MongoDBを選んだ理由は、
- JSONをそのままinsertできる
- あらかじめテーブル等を定義しなくてよい
などです。TwitterAPIはJSON形式でデータをやり取りしています。MongoDBはそのままJSONを追加できるので、今回最も適しているのかなと思いました。初めて勉強するなら、MySQLやPostgreSQLなどの難しいものよりも、データのやり取りが楽な方がいいと思ったからです。
先にJSONの全プロパティをテーブルに定義させるのは大変でしょう…
参考
ありがとうございます!
MongoDBをダウンロードする
MongoDB Download Center | MongoDB
上記公式サイトからmsiファイルをダウンロードします。
MongoDBをインストールする
ダウンロードしたmsiファイルを実行してインストールしましょう。
環境変数を登録
mongo
やmongod
がある場所を環境変数に登録します。
Windowsボタン+R
でファイル名を指定して実行が出るので、sysdm.cpl
を入力して実行しましょう。
システムのプロパティの詳細設定
タブの環境変数
を選択します。
Path変数にmongo
やmongod
のフォルダへのパスを末尾に追加します。
私の場合はC:\Program Files\MongoDB\Server\3.4\bin
でした。
末尾に追加する際に区切り文字の;
を必ず追加してから上記パスを入力してください。
;C:\Program Files\MongoDB\Server\x.x\bin
ですね
実行
MongoDBをインストールしたので、実行してみましょう。
環境変数の登録確認
コマンドプロンプトを開きましょう。ファイル名を指定して実行からcmd
で開きます。
先ほどの環境変数が登録できているかを確認します。
mongo --version
および
mongod --version
を入力しましょう。
環境変数の登録ができている場合はバージョン情報が表示されます。
サーバーの実行
環境変数の登録が住んでることも確認できたので、サーバーを立ち上げます。
コマンドプロンプトでmongod
を実行しましょう。--dbpath
や--logpath
でデータベースの場所やログの生成場所を選択できます。
mongod --dbpath ... --logpath ...
このとき指定した--dbpath
や--logpath
のフォルダがないと、下のようにエラーが出ます。
[main] Failed global initialization: FileNotOpen: Failed to open ...
このようなエラーが出た場合は指定したフォルダを作成しましょう。もしくはアクセス制限を追加しましょう。
mongod
を実行するとファイアウォールのアクセス許可を聞いてくるので許可しましょう。
実行が完了すると、表面上は何も動きません。しかし、正しくサーバーは立ち上がっています。
このコマンドプロンプトは閉じずにそのままにしておきます
クライアントからデータベースにアクセス
サーバーも立ち上がったので、クライアントを使いアクセスしてみましょう。
別のコマンドプロンプトを起動しmongo
を入力します。
show dbs
と入力してみましょう
まだ何も使ってないので、0GBとなっていますね。
MongoDBにデータを追加
mongo
ターミナルから
use testdb
を入力しましょう。
すると
switched to db testdb
というメッセージが出ます。これから追加(検索)するデータはすべてtestdbの中に追加しますという事ですね。
コレクションの追加
コレクションとはデータベースに対するテーブルのようなものです。
db.createCollection("test")
でtest
コレクションを追加します。
また、コマンドの入力の途中でTab
キーを押すと、コマンドの候補が出現します。便利ですね。
{ "ok" : 1 }
という内容が出たら、成功です。
show collections
test
のようにコレクションが追加されたことが分かります。
クリックしてコマンドプロンプトの結果を見る
データを追加する
db.コレクション名.insert({})
で、データを追加できます。
db.test.insert({name:"testinsert",message:"hello mongodb"});
を追加してみましょう。追加する内容はJSON形式で記述する必要があります。
{プロパティ名1:値1,プロパティ名2:値2,...}
といった感じですね。値は文字列の場合は"
か'
で囲まないといけません。
追加に成功すると
WriteResult({"nInserted":1})
と出力されます。
クリックしてコマンドプロンプトの結果を見る
データを検索する
db.コレクション名.find({条件指定},{表示指定})
で指定されたコレクションの中身を検索できます。表示指定の部分は省略できます。また、無条件で検索する(すべての内容を表示)場合は条件指定も省略できます。
db.test.find();
この場合はすべての内容を表示させます。select * from test
のような感じでしょうか?
条件を指定して検索する場合は
db.test.find({name:"testinsert"});
のようにします。
詳しくは、公式のドキュメントに載っています。
db.collection.find() — MongoDB Manual 3.4
クリックしてコマンドプロンプトの結果を見る
終了
クライアントの終了
クライアントはexit
コマンドで終了できます。
>exit bye
サーバーの終了
サーバーはCtrl+C
で終了できます。
終わりに
ここまで読んでくださってありがとうございます!
プログラムに興味のない方には申し訳ありません!ほーんと流し目で見ていただけたらなと思います。
次はプログラムからデータベースに追加しようと思います。
またね('ω')ノ