駆け足MongoDB with Ubuntu
ええ、プログラマのクセに自宅のPCに何もDB環境が入っていない状態は非常に宜しく無いので、大急ぎで入れます。
なんでMongoDBかは気にしないで下さい、最近仕事でOracleのSQLばっかり書いているのでRDBSは使いたく無かったのです。
インストール
鍵をどーにかする。
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10 [sudo] password for tune: Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /etc/apt/secring.gpg --trustdb-name /etc/apt/trustdb.gpg --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyserver keyserver.ubuntu.com --recv 7F0CEB10 gpg: 鍵7F0CEB10をhkpからサーバーkeyserver.ubuntu.comに要求 gpg: 鍵7F0CEB10: 公開鍵“Richard Kreuter <richard@10gen.com>”を読み込みました gpg: 絶対的に信用する鍵が見つかりません gpg: 処理数の合計: 1 gpg: 読込み: 1 (RSA: 1)
/etc/apt/sources.list.d/10gen.list とゆーファイルを作って次の内容を書きこむ。
deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen
リポジトリを更新
$ sudo apt-get update 無視 http://archive.ubuntulinux.jp natty InRelease 無視 http://archive.ubuntulinux.jp natty-non-free/ InRelease 無視 http://jp.archive.ubuntu.com natty InRelease 無視 http://jp.archive.ubuntu.com natty-updates InRelease ...
あとは普通に aptでinstall
$ sudo apt-get install mongodb-10gen パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下のパッケージが自動でインストールされましたが、もう必要とされていません: linux-headers-2.6.38-8 linux-headers-2.6.38-8-generic これらを削除するには 'apt-get autoremove' を利用してください。 以下のパッケージが新たにインストールされます: mongodb-10gen アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 61 個。 ...
設定とか
今のところ初期のまんまだけど、いじりたくなった時のためにメモ
いじるくファイル(細かいことはおいおい)
- /etc/mongodb.conf
- /etc/init/mongodb.conf
- /etc/init.d/mongodb
開始:
sudo service mongodb start
終了:
sudo service mongodb stop
再起動:
sudo service mongodb restart
いじくる
追加(saveとinsertの違いは?):
> i = {"item" : "apple", "price" : 100 } { "item" : "apple", "price" : 100 } > db.things.save(i) > i = {"item" : "grape", "price" : 120 } { "item" : "grape", "price" : 120 } > db.things.save(i) > db.things.save( {"item" : "banana" , "price" : 80} ) > db.things.insert( {"item" : "apple" , "price" : 1000} )
検索:
> db.things.find() { "_id" : ObjectId("4fe53da265f92b8fce6fdf7d"), "item" : "apple", "price" : 100 } { "_id" : ObjectId("4fe53dd365f92b8fce6fdf7e"), "item" : "grape", "price" : 120 } { "_id" : ObjectId("4fe540de65f92b8fce6fdf7f"), "item" : "banana", "price" : 80 } { "_id" : ObjectId("4fe540f165f92b8fce6fdf80"), "item" : "apple", "price" : 1000 } > db.things.find({"item":"apple"}) { "_id" : ObjectId("4fe53da265f92b8fce6fdf7d"), "item" : "apple", "price" : 100 } { "_id" : ObjectId("4fe540f165f92b8fce6fdf80"), "item" : "apple", "price" : 1000 }
削除:
> db.things.remove({"price" : 1000}) > db.things.find() { "_id" : ObjectId("4fe53da265f92b8fce6fdf7d"), "item" : "apple", "price" : 100 } { "_id" : ObjectId("4fe53dd365f92b8fce6fdf7e"), "item" : "grape", "price" : 120 } { "_id" : ObjectId("4fe540de65f92b8fce6fdf7f"), "item" : "banana", "price" : 80 }
おわる:
> exit
参考資料
基本公式サイト見れば書いてある:
http://www.mongodb.org/
UbuntuとかDebianに入れる時:
http://docs.mongodb.org/manual/tutorial/install-mongodb-on-debian-or-ubuntu-linux/
チュートリアル:
http://www.mongodb.org/display/DOCS/Tutorial
RDBSのSQLでやりたい事はmongoDBではこうやれ的な:
http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+Chart
TODO
Haskellで使うのがとりあえずの目標。
http://hackage.haskell.org/package/mongoDB