MongoDBのインストールと簡単なmongo shellの使い方
環境はVagrant+VirtualBoxで作ったCentOS(RHELでも同じみたい)。
環境の作り方は下記で紹介してる。
yumでインストール
- MongoDB取得用のリポジトリを登録
- /etc/yum.repos.d/配下にmongodb.repoを作成
- mongodb.repoを編集
- 64bitの場合
[mongodb] name=MongoDB Repository baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/ gpgcheck=0 enabled=1
-
- 32bitの場合
[mongodb] name=MongoDB Repository baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/i686/ gpgcheck=0 enabled=1
- パッケージ
- mongodb-org
- 以下の4つのメタパッケージ
- mongodb-org-server
- mongodデーモン、設定、初期化スクリプトを含むパッケージ
- mongodb-org-mongos
- mongosデーモンを含むパッケージ
- mongodb-org-shell
- mongo shellを含むパッケージ
- mongodb-org-tools
- mongoimport bsondump、mongodump、mongoexport、mongofiles、mongooplg、mongoperf、mongorestore、mongostat、mongotopを含むパッケージ
- mongodb-org
- インストールの実行
- yum install -y mongodb-org
- バージョン指定の場合は下記みたいな感じ
- yum install -y mongodb-org-2.6.1 mongodb-org-server-2.6.1 mongodb-org-shell-2.6.1 mongodb-org-mongos-2.6.1 mongodb-org-tools-2.6.1
- MongoDBを今後アップグレードしたくない場合は/etc/yum.confに下記を設定
- exclude=mongodb-org,mongodb-org-server,mongodb-org-shell,mongodb-org-mongos,mongodb-org-tools
起動・停止
データファイルは/var/lib/mongoに
ログファイルは/var/log/mongodbに
設定ファイルは/etc/mongod.conf格納される。
- MongoDBの起動
- service mongod start
- もしくは/etc/init.d/mongod start
- rootかsudoでやってね
- 起動の確認
- /var/log/mongodb/mongod.log
- 下記のコマンドでMongoDBを自動起動の対象にする
- chkconfig --add mongod
- chkconfig mongod on
- MongoDBの停止
- service mongod stop
- もしくは/etc/init.d/mongod stop
- MongoDBの再起動
- service mongod restart
- もしくは/etc/init.d/mongod restart
参考:
http://docs.mongodb.org/manual/tutorial/install-mongodb-on-red-hat-centos-or-fedora-linux/
mongo shell
mongo shellってのがあってコード書かなくてもある程度会話できる。
MySQL Client的なクライアントツールかな。
- mongo shellの起動
- mongo
- こまった時の
- > help
db.help() help on db methods db.mycoll.help() help on collection methods sh.help() sharding helpers rs.help() replica set helpers help admin administrative help help connect connecting to a db help help keys key shortcuts help misc misc things to know help mr mapreduce show dbs show database names show collections show collections in current database show users show users in current database show profile show most recent system.profile entries with time >= 1ms show logs show the accessible logger names show log [name] prints out the last segment of log in memory, 'global' is default use <db_name> set current database db.foo.find() list objects in collection foo db.foo.find( { a : 1 } ) list objects in foo where a == 1 it result of the last line evaluated; use to further iterate DBQuery.shellBatchSize = x set default number of items to display on shell exit quit the mongo shell
- 今のDBを確認
- > db
- 現在のdbが表示される
- デフォルトではtestっていうDBがあって、これが表示される
- > db
- DBの作成
- > use mydb
- mydbが存在するば切り替えられて、存在しなければ作成される
- 「> db」で確認するとmydbとでる
- > use mydb
- DBの一覧を確認(ただし、バージョン2.4以降>
- > show dbs
- testの他にadmin,local(起動ログ、インデックスが入ってる)というDBがある
- db.startup_log.find()ってたたくとログが見れる(use localしといてね)
- > show dbs
- ドキュメントを作成
- > j = { name : "mongo" }
- > k = { x : 3 }
- use mydbしといてね
- ドキュメントをコレクション(testData)へ登録
- > db.testData.insert(j)
- > db.testData.insert(k)
- コレクションはtestDataという名前で登録する際に作成される
- コレクションの確認
- > show collections
- testDataとsystem.indexesというのがでる
- system.indexesは追加したコレクションとかの情報を覚えてるみたい
- > show collections
- コレクションのドキュメントを全件取得
- > db.testData.find()
- 「"_id" : ObjectID」みたいなのがついてるが、これはMongoDBがユニークなIDを自動的に付与する
- > db.testData.find()
- コレクションのドキュメントを個数制限で取得
- > db.testData.find().limit(1)
- 1件だけ取得できる
- > db.testData.find().limit(1)
- コレクションのドキュメントを検索
- > db.testData.find( { x : 3 } )
- x要素が3のものを検索
- > db.testData.find( { name : "mongo" } )
- name要素が"mongo"のものを検索
- > db.testData.find( { x : 3 } )
- コレクションのドキュメントを全件削除
- > db.testData.remove()
- コレクションのドキュメントを条件付きで削除
- > db.testData.remove( { x : 3 } )
MongoDB -> db -> collection
って階層なんだね。
チュートリアル:
http://docs.mongodb.org/manual/tutorial/getting-started/
コレクションメソッド:
http://docs.mongodb.org/manual/reference/method/js-collection/
MongoDBがんばってる人
http://doryokujin.hatenablog.jp/entry/20110519/1305737343