mongoDBの簡単な使い方と頻繁に使うコマンドをまとめようと思います。

mongoDBは、キーバリューストア型(KVS型)のデーターベースです。キーバリューとは名前の通り、キーと値で一つのデータを扱う形式の事です。言い換えるなら変数名と値のような組み合わせを持つデータベースです。

今回は、手元のローカル環境でmongoDBをインストールしてアプリケーションから利用できるように準備する流れを解説したいと思います。

目次

mongoDBのインストールと起動方法

はじめにmongoDBをインストールして、起動するまでの手順をまとめます。

mongoDBのインストール方法

まずは、mongoDBをローカルにインストールします。お使いの環境にも寄るのですが、以下の公式サイトからダウンロードが可能です。

MongoDB
MongoDB Download Center

また、Homebrewやwgetコマンドからもインストール可能です。

bash
1
2
$ brew install mongodb
$ brew upgratde mongodb

上記は、OSXのHomebrewでmongoDBをインストールして、バージョンをアップグレードするコマンド例です。

コマンドラインの使い方

コマンドラインの使い方については以下の記事をご覧ください。

mongoDBのデータ保存先を作成

mongoDBはデータを書き込む保存先を予め用意する必要があります。

bash
1
$ mkdir ~/Desktop/mongoDB-tmp && mkdir ~/Desktop/mongoDB-tmp/data

ディレクトリ名は任意で構いません。今回はデスクトップ下にmongoDB-tmpmongoDB-tmp/dataというディレクトリを作成したいと思います。

mognoDBの起動

続いて、mongoDBを起動します。

bash
1
$ mongod --dbpath ~/Desktop/mongoDB-tmp/data/ --logpath ~/Desktop/mongoDB-tmp/mongodb.log &

起動時に先ほど作成したディレクトリをデータ記録先とログの記録先に指定します。これでローカル環境にmongoDBが起動しました。ちなみに、mongodというコマンドは、mongoDBのデーモンという意味らしいです。

mongoDBの中身を操作する

次にmognoDBのデータを操作してみましょう。先ほどmongoDBを起動したウインドウはそのままにして、新たにコマンドを実行するウインドウを立ち上げてmongoコマンドを打ちます。

1
2
3
4
$ mongo
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.9
>

アプリケーションからmongoDBに接続できるローカルアドレスと、mongoDBのバージョンが表示されます。通常、mognoDBはexpressサーバーなどから利用することが多いと思います。expressに指定するDBの接続先はこのアドレスを入力するとexpressからmongoDBを使えるようになります。

今回はコマンドからmongoDBを操作したいと思います。

mongoDBの構造について

mongoDBは定義したデータベースにデータを記録する入れ物を用意します。これをコレクションと呼んでいます。コレクションには 何件かのデータを保存する構造になっています。このデータをドキュメントと呼んでいます。ドキュメントは冒頭でも説明した、キーバリュー型(KVS)で記録されます。

簡単に図式化すると書きのような構造となっています。

  • データベース

    • コレクション

      • ドキュメント(キー名と値)
      • ドキュメント(キー名と値)
      • ドキュメント(キー名と値)

mySQLで例えるならば、コレクションがテーブル、ドキュメントがレコードに相当します。

mongoDBのコマンド一覧について

それでは、mongoDBのデータを操作してみたいと思います。

データベースの各種操作

まずはコレクションやドキュメントを束ねているデータベースの各種操作をまとめてみたいと思います。

データベースの新規作成

まずはデータベースの作成です。データベースを新規作成するにはuse (データベース名)というコマンドを入力します。

bash
1
2
$ use (任意のデータベース名)
switched to db (任意のデータベース名)

作成されるとswitched to db ...というメッセージが表示されます。これはデータベースを新規作成後に、データベースの操作が可能な状態になっています。また、操作可能なデータベース名はdbコマンドで確認する事ができます。

bash
1
2
$ db
(任意のデータベース名)

確認すると、先ほど作成したデータベース名が返ってきます。

データベースの一覧を表示

続いて、作成されたデータベースが存在するか確認してみましょう。データベースの一覧はshow dbsで取得できます。

bash
1
2
$ show dbs
(ここにデータベース名が一覧で表示される)

ただし、先ほど作成したデータベースは一つもドキュメントが存在しないため、上記コマンドでは表示されません。

データベースの削除

データベースを削除したい時は、削除したいデータベースをuse (データベース名)で切り替えた後、db.dropDatabase()というコマンドを入力します。

bash
1
2
$ use (任意のデータベース名)
$ db.dropDatabase();

コレクションの各種操作

続いて、ドキュメントを束ねているコレクションの操作をまとめます。

コレクションの新規作成

データベースにコレクションを新規作成したい時は、扱うデータベースをuse (データベース名)で切り替えた後、db.createCollection()というコマンドを入力します。

bash
1
2
$ use (任意のデータベース名)
$ db.createCollection('(任意のコレクション名)');

コレクションの一覧を表示

コレクションの一覧を取得するには、show collectionsというコマンドを使います。

bash
1
2
$ use (任意のデータベース名)
$ show collections

コレクションの削除

コレクションを削除するには、db.(コレクション名).drop();というコマンドを使います。

bash
1
2
$ use (任意のデータベース名)
$ db.(コレクション名).drop();

ドキュメントの各種操作

続いて、データベースのデータ値を格納する、ドキュメントの操作についてまとめます。

ドキュメント(データ)の追加

ドキュメントに値を追加するには、db.(コレクション名).insert();を使います。

bash
1
2
$ use (任意のデータベース名)
$ db.(コレクション名).insert({ name:'(任意のキー名)', (任意のバリュー名): '(任意の値)' });

例えばsomeoneというデータベース、COLというコレクションにデータを追加する場合は、以下のように記述します。

bash
1
2
$ use someone
$ db.COL.insert({ name:'keyname', value1: '値のサンプル' });

ドキュメントの全件取得

追加されたドキュメントを確認してみましょう。コレクション内のドキュメントを全て取得するには、db.(コレクション名).find();を使います。

bash
1
2
3
$ use someone
$ db.COL.find();
> { "_id" : ObjectId("xxxx"), "name" : "keyname", "value1" : "値のサンプル" }

上記コマンドの例ではsomeoneというデータベース、COLというコレクションのドキュメントを全件取得しています。

ドキュメントの全件削除と一部削除

ドキュメントを全件削除するには、db.(コレクション名).remove();を使います。

bash
1
2
$ use someone
$ db.COL.remove();

また、一部を削除するには、次のようにキー名を指定します。

bash
1
2
$ use someone
$ db.COL.remove({ name : "keyname" });

mongoDBの終了

mongoDBの接続を終了するには、一旦adminというデータベースに切り替えた後で、db.shutdownServer();コマンドとquit();コマンドを実行します。

bash
1
2
3
$ use admin
$ db.shutdownServer();
$ quit();

参考記事

当記事のコマンドは下記の記事を参考にさせていただきました。詳細にまとめてくださりありがとございます。

Qiita
MongoDB コマンドメモとか書き
コマンド一覧と、find()やupdate()コマンドの条件による絞込方法なども詳しく解説されている。