mongoDB使ってみた。


どんなもんだろうなーと思ったので試してみた。
環境はDebian Squeeze

インストール


Debianなので本家サイトのやり方に従ってパッケージで入れる。


キー追加。

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10


リポジトリ追加。

$ sudo vi /etc/apt/sources.list


行末に追加する。

deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen


インストール。

$ sudo apt-get update 
$ sudo apt-get install mongodb-10gen


動作確認でシェル実行。

$ mongo
MongoDB shell version: 1.8.1
connecting to: test

INSERT的なこと


db.<テーブル名的な>.insert(<保存データJSON>)でできるっぽい。
テーブル作る的なことはしなくてもデータ格納時になければ勝手に作ってくれるみたい。

データ保存する
> db.users.insert({ name : 'test1', seq : 1});
いっぱい突っ込む
> for (var i = 2; i <= 100; i++) db.users.insert({ name : 'test' + i, seq : i})

SELECTする

SELECT * FROM users みたいな
> db.users.find();
{ "_id" : ObjectId("4da636ce57311e95d38bd011"), "name" : "test1", "seq" : 1 }
{ "_id" : ObjectId("4da637af57311e95d38bd012"), "name" : "test2", "seq" : 2 }
{ "_id" : ObjectId("4da637af57311e95d38bd013"), "name" : "test3", "seq" : 3 }
{ "_id" : ObjectId("4da637af57311e95d38bd014"), "name" : "test4", "seq" : 4 }
{ "_id" : ObjectId("4da637af57311e95d38bd015"), "name" : "test5", "seq" : 5 }
{ "_id" : ObjectId("4da637af57311e95d38bd016"), "name" : "test6", "seq" : 6 }
{ "_id" : ObjectId("4da637af57311e95d38bd017"), "name" : "test7", "seq" : 7 }
{ "_id" : ObjectId("4da637af57311e95d38bd018"), "name" : "test8", "seq" : 8 }
{ "_id" : ObjectId("4da637af57311e95d38bd019"), "name" : "test9", "seq" : 9 }
{ "_id" : ObjectId("4da637af57311e95d38bd01a"), "name" : "test10", "seq" : 10 }
{ "_id" : ObjectId("4da637af57311e95d38bd01b"), "name" : "test11", "seq" : 11 }
{ "_id" : ObjectId("4da637af57311e95d38bd01c"), "name" : "test12", "seq" : 12 }
{ "_id" : ObjectId("4da637af57311e95d38bd01d"), "name" : "test13", "seq" : 13 }
{ "_id" : ObjectId("4da637af57311e95d38bd01e"), "name" : "test14", "seq" : 14 }
{ "_id" : ObjectId("4da637af57311e95d38bd01f"), "name" : "test15", "seq" : 15 }
{ "_id" : ObjectId("4da637af57311e95d38bd020"), "name" : "test16", "seq" : 16 }
{ "_id" : ObjectId("4da637af57311e95d38bd021"), "name" : "test17", "seq" : 17 }
{ "_id" : ObjectId("4da637af57311e95d38bd022"), "name" : "test18", "seq" : 18 }
{ "_id" : ObjectId("4da637af57311e95d38bd023"), "name" : "test19", "seq" : 19 }
{ "_id" : ObjectId("4da637af57311e95d38bd024"), "name" : "test20", "seq" : 20 }
has more
SELECT * FROM users LIMIT 5 みたいな
> db.users.find().limit(5)
{ "_id" : ObjectId("4da638a757311e95d38bd075"), "name" : "test1", "seq" : 1 }
{ "_id" : ObjectId("4da638a757311e95d38bd076"), "name" : "test2", "seq" : 2 }
{ "_id" : ObjectId("4da638a757311e95d38bd077"), "name" : "test3", "seq" : 3 }
{ "_id" : ObjectId("4da638a757311e95d38bd078"), "name" : "test4", "seq" : 4 }
{ "_id" : ObjectId("4da638a757311e95d38bd079"), "name" : "test5", "seq" : 5 }
SELECT * FROM users WHERE seq = 5 みたいな
> db.users.find({seq : 5})
{ "_id" : ObjectId("4da638a757311e95d38bd079"), "name" : "test5", "seq" : 5 }
SELECT name FROM users WHERE seq = 10 みたいな
> db.users.find({seq : 10}, {name : true})
{ "_id" : ObjectId("4da638a757311e95d38bd07e"), "name" : "test10" }
SELECT * FROM users WHERE seq > 5 AND seq < 10 みたいな
> db.users.find({ seq : { $gt : 5, $lt : 10}})
{ "_id" : ObjectId("4da638a757311e95d38bd07a"), "name" : "test6", "seq" : 6 }
{ "_id" : ObjectId("4da638a757311e95d38bd07b"), "name" : "test7", "seq" : 7 }
{ "_id" : ObjectId("4da638a757311e95d38bd07c"), "name" : "test8", "seq" : 8 }
{ "_id" : ObjectId("4da638a757311e95d38bd07d"), "name" : "test9", "seq" : 9 }
SELECT * FROM users WHERE seq >= 5 AND seq <= 10 みたいな
> db.users.find({ seq : { $gte : 5, $lte : 10}})
{ "_id" : ObjectId("4da638a757311e95d38bd079"), "name" : "test5", "seq" : 5 }
{ "_id" : ObjectId("4da638a757311e95d38bd07a"), "name" : "test6", "seq" : 6 }
{ "_id" : ObjectId("4da638a757311e95d38bd07b"), "name" : "test7", "seq" : 7 }
{ "_id" : ObjectId("4da638a757311e95d38bd07c"), "name" : "test8", "seq" : 8 }
{ "_id" : ObjectId("4da638a757311e95d38bd07d"), "name" : "test9", "seq" : 9 }
{ "_id" : ObjectId("4da638a757311e95d38bd07e"), "name" : "test10", "seq" : 10 }
SELECT * FROM users WHERE name LIKE "test1%" みたいな
> db.users.find({name : /test1.*/i})
{ "_id" : ObjectId("4da638a757311e95d38bd075"), "name" : "test1", "seq" : 1 }
{ "_id" : ObjectId("4da638a757311e95d38bd07e"), "name" : "test10", "seq" : 10 }
{ "_id" : ObjectId("4da638a757311e95d38bd07f"), "name" : "test11", "seq" : 11 }
{ "_id" : ObjectId("4da638a757311e95d38bd080"), "name" : "test12", "seq" : 12 }
{ "_id" : ObjectId("4da638a757311e95d38bd081"), "name" : "test13", "seq" : 13 }
{ "_id" : ObjectId("4da638a757311e95d38bd082"), "name" : "test14", "seq" : 14 }
{ "_id" : ObjectId("4da638a757311e95d38bd083"), "name" : "test15", "seq" : 15 }
{ "_id" : ObjectId("4da638a757311e95d38bd084"), "name" : "test16", "seq" : 16 }
{ "_id" : ObjectId("4da638a757311e95d38bd085"), "name" : "test17", "seq" : 17 }
{ "_id" : ObjectId("4da638a757311e95d38bd086"), "name" : "test18", "seq" : 18 }
{ "_id" : ObjectId("4da638a757311e95d38bd087"), "name" : "test19", "seq" : 19 }
{ "_id" : ObjectId("4da638a757311e95d38bd0d8"), "name" : "test100", "seq" : 100 }
SELECT * FROM users ORDER seq DESC みたいな
> db.users.find().sort({ seq : -1 })
{ "_id" : ObjectId("4da638a757311e95d38bd0d8"), "name" : "test100", "seq" : 100 }
{ "_id" : ObjectId("4da638a757311e95d38bd0d7"), "name" : "test99", "seq" : 99 }
{ "_id" : ObjectId("4da638a757311e95d38bd0d6"), "name" : "test98", "seq" : 98 }
{ "_id" : ObjectId("4da638a757311e95d38bd0d5"), "name" : "test97", "seq" : 97 }
{ "_id" : ObjectId("4da638a757311e95d38bd0d4"), "name" : "test96", "seq" : 96 }
{ "_id" : ObjectId("4da638a757311e95d38bd0d3"), "name" : "test95", "seq" : 95 }
{ "_id" : ObjectId("4da638a757311e95d38bd0d2"), "name" : "test94", "seq" : 94 }
{ "_id" : ObjectId("4da638a757311e95d38bd0d1"), "name" : "test93", "seq" : 93 }
{ "_id" : ObjectId("4da638a757311e95d38bd0d0"), "name" : "test92", "seq" : 92 }
{ "_id" : ObjectId("4da638a757311e95d38bd0cf"), "name" : "test91", "seq" : 91 }
{ "_id" : ObjectId("4da638a757311e95d38bd0ce"), "name" : "test90", "seq" : 90 }
{ "_id" : ObjectId("4da638a757311e95d38bd0cd"), "name" : "test89", "seq" : 89 }
{ "_id" : ObjectId("4da638a757311e95d38bd0cc"), "name" : "test88", "seq" : 88 }
{ "_id" : ObjectId("4da638a757311e95d38bd0cb"), "name" : "test87", "seq" : 87 }
{ "_id" : ObjectId("4da638a757311e95d38bd0ca"), "name" : "test86", "seq" : 86 }
{ "_id" : ObjectId("4da638a757311e95d38bd0c9"), "name" : "test85", "seq" : 85 }
{ "_id" : ObjectId("4da638a757311e95d38bd0c8"), "name" : "test84", "seq" : 84 }
{ "_id" : ObjectId("4da638a757311e95d38bd0c7"), "name" : "test83", "seq" : 83 }
{ "_id" : ObjectId("4da638a757311e95d38bd0c6"), "name" : "test82", "seq" : 82 }
{ "_id" : ObjectId("4da638a757311e95d38bd0c5"), "name" : "test81", "seq" : 81 }
has more

UPDATEする

UPDATE users SET name = "test555" WHERE seq = 5 みたいな
> db.users.update({seq : 5}, { $set : { name : 'test555'}})
> db.users.find({seq : 5})                                 
{ "_id" : ObjectId("4da63d9557311e95d38bd0dd"), "name" : "test555", "seq" : 5 }

DELETEする

DELETE FROM users WHERE seq = 5 みたいな
> db.users.remove({seq : 5})
DELETE FROM users みたいな
> db.users.remove()

シェルの終了

> exit

感想


JavaScriptチックなせいか、なんだかとっても好感触。
これは好きになれそうかも。