ぺーぺーSEのブログ

備忘録・メモ用サイト。

MongoDBのインストールと簡単なmongo shellの使い方

環境はVagrant+VirtualBoxで作ったCentOS(RHELでも同じみたい)。
環境の作り方は下記で紹介してる。

blog.pepese.com

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 bsondumpmongodumpmongoexportmongofilesmongooplgmongoperfmongorestoremongostatmongotopを含むパッケージ
  • インストールの実行
    • 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格納される。

  1. MongoDBの起動
    • service mongod start
    • もしくは/etc/init.d/mongod start
      • rootかsudoでやってね
  2. 起動の確認
    • /var/log/mongodb/mongod.log
  3. 下記のコマンドでMongoDBを自動起動の対象にする
    • chkconfig --add mongod
    • chkconfig mongod on
  4. MongoDBの停止
    • service mongod stop
    • もしくは/etc/init.d/mongod stop
  5. 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的なクライアントツールかな。

  1. mongo shellの起動
    • mongo
  2. こまった時の
    • > 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
  1. 今のDBを確認
    • > db
      • 現在のdbが表示される
      • デフォルトではtestっていうDBがあって、これが表示される
  2. DBの作成
    • > use mydb
      • mydbが存在するば切り替えられて、存在しなければ作成される
      • > db」で確認するとmydbとでる
  3. DBの一覧を確認(ただし、バージョン2.4以降>
    • > show dbs
      • testの他にadmin,local(起動ログ、インデックスが入ってる)というDBがある
      • db.startup_log.find()ってたたくとログが見れる(use localしといてね)
  4. ドキュメントを作成
    • > j = { name : "mongo" }
    • > k = { x : 3 }
      • use mydbしといてね
  5. ドキュメントをコレクション(testData)へ登録
    • > db.testData.insert(j)
    • > db.testData.insert(k)
      • コレクションはtestDataという名前で登録する際に作成される
  6. コレクションの確認
    • > show collections
      • testDataとsystem.indexesというのがでる
      • system.indexesは追加したコレクションとかの情報を覚えてるみたい
  7. コレクションのドキュメントを全件取得
    • > db.testData.find()
      • 「"_id" : ObjectID」みたいなのがついてるが、これはMongoDBがユニークなIDを自動的に付与する
  8. コレクションのドキュメントを個数制限で取得
    • > db.testData.find().limit(1)
      • 1件だけ取得できる
  9. コレクションのドキュメントを検索
    • > db.testData.find( { x : 3 } )
      • x要素が3のものを検索
    • > db.testData.find( { name : "mongo" } )
      • name要素が"mongo"のものを検索
  10. コレクションのドキュメントを全件削除
    • > db.testData.remove()
  11. コレクションのドキュメントを条件付きで削除
    • > 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