2011年7月18日 星期一

MongoDB 快速筆記

Standard
這幾年 Web Service 的龐大需求,對資料庫的要求是快速且吞吐量大,因此業界開始流行 NoSQL,它省略最花時間的資料庫操作和複雜的結構,用最合人類使用需求的方式在儲存資料,其帶來的好處,當然就是能提供極速的反應和龐大的資料吞吐量。目前最廣為人知的就是 BigTable,Google 提供全世界快速搜尋和各種線上服務,靠的就是這 NoSQL Database。

其實 NoSQL Database 的選擇非常多,但本文只是記錄 MongoDB 的操作筆記,因此就不詳述。 有興趣的人,可以去查閱網路上更多的資料。

選擇 Database:
use my_database

利用 root 新增 Database 的管理帳號:
# 切換到 my_database
use my_database
# 先用 root 帳號認證
db.getSisterDB("admin").auth("root", "rootpassword");
# 新增 frankie 帳號
db.addUser("frankie", "fredpassword");

新增 Database 的管理帳號:
# 切換到 my_database
use my_database
# 先用 frankie 帳號認證
db.auth("frankie", "fredpassword");
# 新增 zombie 帳號
db.addUser("zombie", "zombiepassword");

插入新增資料(Insert):
# 插入一筆新資料到 users Collection (相當於傳統 SQL 裡的 Table 角色)
db.users.insert({ username: "fred", password: "12345678" })
# 含當前時間
db.users.insert({ username: "fred", password: "12345678", created: new Timestamp() })

查詢(Query):
# 查詢所有 username 為 fred 的資料
db.users.find({ username: "fred" })
# 查詢單筆
db.users.find_one({ username: "fred" })

修改更新資料(Update):
# 更新 username 為 fred 的 password 欄位
db.users.update({ username: "fred" }, { $set: { password: "87654321" }})
# 完全取代 username 為 fred 的資料(username 和 password 欄位會因此不見,只剩下 email 欄位)
db.users.update({ username: "fred" }, { email: "cfsghost@gmail.com"})

刪除資料(Delete):
db.users.remove({ username: "fred" })