MongoDB の基本的な使い方
Oracle と MongoDB の違い
MongoDB は、いわゆる NoSQL と呼ばれるデータベースである。JSON のようなドキュメントというデータを、コレクションというまとまりで保持する。既存の RDB の代表例として Excel と Oracle を使うと、MongoDB との名称の対応は次のようになる。
| Excel | Oracle | MongoDB |
|---|---|---|
| Book | Schema | Database |
| Sheet | Table | Collection |
| Row | Row | Document |
| Column | Column | Field |
| Shell | Field | Value |
サーバー
サーバーコマンドは mongod である。ここでは mongod を使ってサーバーを起動、終了するコマンドを見ていく。ここで扱わない mongod コマンドのオプションは「MongoDB コマンド mongod の使い方」を参照する。
サーバーの起動と終了
- サーバー起動
- データベースファイルを保存する場所が
C:\mongodb\server\dataに用意されているものとする。 - コマンドプロンプトを起動し、次のコマンドを実行すると MongoDB サーバーを起動できる。
mongod --dbpath "C:\mongodb\server\data"
- データベースファイルを保存する場所が
- サーバー終了
- 起動中のコマンドプロンプトで
Ctrl+Cを押すと shutdown コマンドが発行され、MongoDB が終了する。
- 起動中のコマンドプロンプトで
クライアント
上記の手順で MongoDB を起動した状態で、クライアントコマンド mongo を使って接続してみよう。MongoDB サーバーと同じサーバーから接続する場合は、サーバー起動に使ったコマンドプロンプトとは別に起動して接続する。ここで扱わない mongo の他のオプションについては「MongoDB コマンド mongo の使い方」を参照する。
サーバーへの接続と切断
- サーバー接続
MongoDB が起動している端末と同じ端末であれば、コマンドプロンプトを起動して上記のコマンドを実行すると接続できる。別ホストの場合は、
mongo--host <ホスト名>オプションで接続先を指定する。 - サーバー切断
MongoDB との接続を切るにはCtrl+Cを押す。また、次のコマンドを実行して切断することもできる。> exit
データベースの作成、一覧表示、変更、削除
-
データベース作成
> use sample_database指定したデータベースに接続する。データベースが存在しない場合は作成される。
-
データベース一覧表示
> show dbsデフォルトでは
admin、local、testの 3 つのデータベースが存在する。use <データベース名>を実行した直後は、作成したデータベースは一覧に表示されない。show dbsで表示されるには、少なくとも 1 件以上のデータ登録が必要である。 -
データベース名変更
> db.copyDatabase('old_database', 'new_database') > use old_database > db.dropDatabase()残念ながらデータベース名を変更するコマンドはないため、古いデータベースを新しいデータベースへコピーし、古いデータベースを削除する形にする。
-
データベース削除
> use sample_database > db.dropDatabase();削除するデータベースに接続し、
db.dropDatabase()を実行すると削除できる。
コレクションの作成、一覧表示、変更、削除
-
コレクション作成
> db.createCollection(products);引数に指定した名前のコレクションを作成する。
-
コレクション一覧表示
> show collections現在接続しているデータベースに含まれるコレクション一覧を表示する。
-
コレクション名変更
> db.old_collection_name.renameCollection(new_collection_name, true);old_collection_nameからnew_collection_nameに名前を変更する。また、変更時に既存のコレクションold_collection_nameを削除する場合は、第 2 引数にtrueを指定する。 -
コレクション削除
> db.products.drop();指定したコレクションを削除する。
ドキュメントの追加、照会、変更、削除
-
ドキュメント追加
> db.products.insert( {name: 'sample book', price: 1280} )指定したコレクションにドキュメントを追加する。
insertを実行すると_idフィールドが自動で追加される。 -
ドキュメント照会
> db.products.find( {name: {$eq: 'sample book'}} )引数に指定するクエリの基本形式は
{ フィールド: { 演算子: 値 }}である。演算子については MongoDB - Query and Projection Operators に記載されている。引数を指定しない場合は、すべてのデータが照会される。 -
ドキュメント変更
> db.products.update( {name: {$eq: 'sample book'}}, {$set: {name: 'Hack MongoDB'}}, {upsert: false, multi: true} )第 1 引数で指定した条件に一致するドキュメントを、第 2 引数で指定した内容に変更する。第 3 引数のオブジェクトで指定している
upsertは「条件に一致するドキュメントが見つからない場合に挿入するか」を指定し、multiは「条件に一致するすべてのドキュメントを変更対象にするか」を指定する。 -
ドキュメント削除
> db.products.remove( {name: {$eq: 'sample book'}} )第 1 引数で指定したクエリに一致するすべてのドキュメントを削除する。
参考資料
- MongoDB - copydb
- MongoDB - db.dropDatabase()
- MongoDB - db.createCollection()
- MongoDB - db.collection.insert()
- MongoDB - db.collection.find()
- MongoDB - db.collection.update()
- MongoDB - db.collection.remove()