MongoDBメモ(その1)
dot install のレッスン動画を見ながら勉強。
http://dotinstall.com/lessons/basic_mongodb_v3/35001
この記事の範囲。 - 01 MongoDBとはなにか? - 02 MongoDBをインストールしよう - 03 用語を理解しておこう - 04 データベースを操作してみよう - 05 コレクションを操作してみよう
概要
インストール
yumリポジトリを登録
リポジトリファイル作成
$ sudo vi /etc/yum.repos.d/mongodb-org-3.4.repo
記述内容
[mongodb-org-3.4] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
yumでインストール
$ sudo yum install -y mongodb-org
起動
以下のコマンドで起動。
$ sudo service mongod start
次回以降も自動的に立ち上がるように設定。
$ sudo chkconfig mongod on
バージョン確認:
$ mongo --version
用語
階層構造
- Database
- Collection
- Document
- Collection
RDBに対応させると
- Database = データベース
- Collection = テーブル
- Document = レコード
データ格納
JSON形式で格納される。
{field: val, field: val ...}
MongoDBではキーのことをfield
と呼ばれることもある。
スキーマレスなのでDocumentの項目があったりなかったりしても大丈夫。
{name: "yusuke", score: 30} {name: "hosonuma", score: 58, team: 3}
データベース操作
アクセス:
$ mongo
データベースの一覧を表示
> show dbs; admin 0.000GB local 0.000GB
データベースの作成・切り替え
> db.createCollection("users"); { "ok" : 1 }
コレクションが存在しないとshow dbs;
では表示されないので注意。
> show dbs admin 0.000GB local 0.000GB
コレクションの作成
db.createCollection()
で作成。
> db.createCollection("users"); { "ok" : 1 }
コレクションが作成されればshow dbs;
で表示される。
> show dbs; admin 0.000GB local 0.000GB mydb 0.000GB
状態を確認する
db.stats()
で確認出来る。
> db.stats(); { "db" : "mydb", "collections" : 1, "views" : 0, "objects" : 0, "avgObjSize" : 0, "dataSize" : 0, "storageSize" : 4096, "numExtents" : 0, "indexes" : 1, "indexSize" : 4096, "ok" : 1 }
DBの削除
db.dropDatabase()
で現在のデータベースを削除する。
> db.dropDatabase(); { "dropped" : "mydb", "ok" : 1 }
mydb
が削除されている。
> show dbs; admin 0.000GB local 0.000GB
コレクションの操作
作成
db.createCollection()
で。
> db.createCollection("users"); { "ok" : 1 }
一覧表示
show collections;
を使う。
> show collections; users
リネーム
データベース名.Collection名.renameCollection("新しい名前");
。
オブジェクト指向っぽいAPI。
> db.users.renameCollection("customers"); { "ok" : 1 }
ドキュメントの操作
挿入
ドキュメントを挿入すれば、コレクションは自動的に作られる。
格納するデータはJSON形式で記述する。
> db.users.insert( ... { ... name: "taguchi", ... score: 30 ... } ... ); WriteResult({ "nInserted" : 1 }) > show collections; users
スキーマレスなのでデータ構造が違っても大丈夫。
> db.users.insert({ ... name: "fkoji", ... score: 50, ... tags: ["web", "mobile"] ... }); WriteResult({ "nInserted" : 1 })
JavaScriptを使う
JavaScriptを使って処理を記述できる。
> for (var i = 0; i < 10; i++) { ... db.users.insert({ ... score: Math.random() ... }); ... } WriteResult({ "nInserted" : 1 })
件数表示
> db.users.count(); 12
一覧表示
_id
は MogoDB が自動的に振る一意なID。
> db.users.find(); { "_id" : ObjectId("58c5458ca48b064d97084189"), "name" : "taguchi", "score" : 30 } { "_id" : ObjectId("58c545baa48b064d9708418a"), "name" : "fkoji", "score" : 50, "tags" : [ "web", "mobile" ] } { "_id" : ObjectId("58c545d2a48b064d9708418b"), "score" : 0.30322503633107833 } { "_id" : ObjectId("58c545d2a48b064d9708418c"), "score" : 0.5613546607214355 } { "_id" : ObjectId("58c545d2a48b064d9708418d"), "score" : 0.2844040596878158 } { "_id" : ObjectId("58c545d2a48b064d9708418e"), "score" : 0.9263121937224452 } { "_id" : ObjectId("58c545d2a48b064d9708418f"), "score" : 0.5939208256213909 } { "_id" : ObjectId("58c545d2a48b064d97084190"), "score" : 0.5308342673704005 } { "_id" : ObjectId("58c545d2a48b064d97084191"), "score" : 0.8924712820338384 } { "_id" : ObjectId("58c545d2a48b064d97084192"), "score" : 0.9430223426794738 } { "_id" : ObjectId("58c545d2a48b064d97084193"), "score" : 0.6797531592023286 } { "_id" : ObjectId("58c545d2a48b064d97084194"), "score" : 0.9737296169048628 }
削除
条件を指定しない場合は、以下のように空のJSONを渡す。
> db.users.remove({}); WriteResult({ "nRemoved" : 12 }) > db.users.find();