駆け足MongoDB with Ubuntu

ええ、プログラマのクセに自宅のPCに何もDB環境が入っていない状態は非常に宜しく無いので、大急ぎで入れます。
なんでMongoDBかは気にしないで下さい、最近仕事でOracleSQLばっかり書いているので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

TODO

Haskellで使うのがとりあえずの目標。
http://hackage.haskell.org/package/mongoDB