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チックなせいか、なんだかとっても好感触。
これは好きになれそうかも。