[noSQL] Hướng dẫn cài đặt và cấu hình MongoDB trên Ubuntu server 12.04

MongoDB là gì ?
Có thể hiểu một cách đơn giản là mongoDB là một cơ sở dữ liệu hướng đối tượng, tức là nó có thể biến đổi linh hoạt một cách nhanh chóng tùy theo yêu cầu của người dùng. Nó không rập khuôn là phải tạo database trước, rồi tạo các bảng với các trường, tiếp đó là tạo các mối liên hệ, sau cùng mới nhập dữ liệu. Ở đây các database, các collections (các bảng) được tạo 1 cách tự động từ code, và việc thay đổi cấu trúc của database rất dễ dàng.
Để có thể hiểu rõ hơn, tham khảo các link cuối document.
I. Cài đặt
Thực hiện các câu lệnh sau đây:
Step 1:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
Step 2: Tạo file sau
sudo nano /etc/apt/sources.list.d/10gen.list
Step 3: Thêm nội dung sau vào file vừa tạo
deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen
Step 4:
sudo apt-get update
Step 5:
sudo apt-get install mongodb-10gen
Step 6:
sudo service mongodb start
Step 7: Đăng nhập:
mongo
II. Các thao tác trên database
1. Cấu trúc của mongoDB
Trong mongoDB lưu dữ liệu theo từng database, trong database có các collections (hay là các bảng theo mô hình csdl quan hệ). Cấu trúc của 1 bảng rất linh hoạt, khó hiểu, đòi hỏi phải có kinh nghiệm làm việc trên mongoDB.

2. Tạo database
Đối với mongoDB, không có lệnh tạo database, database sẽ được tạo 1 cách tự động thông qua việc chúng ta tạo collections
Step 1:
use database_name Eg: use QLNS
Lệnh use tương tự lệnh use trong mysql server. Chức năng là chọn 1 database nào đó để làm việc, trong trường hợp này, để tạo 1 database tên QLNS thì use QLNS, database QLNS sẽ tạm thời lưu vào cache chứ chưa được tạo.
Step 2:
Tạo collections
db.createCollection("name") Eg: db.createCollection("Nhan_vien")
Lệnh này sẽ tạo 1 collection tên là nhân viên. Ta có thể tạo nhiều collection tùy theo yêu cầu. Step 3: Lưu
db.db_name.save() Eg: db.QLNS.save()
3. Xóa 1 database Step 1:
use database_name; Eg: use QLNS
Step 2:
db.dropDatabase(); Ex: db.dropDatabase();
4. Xóa 1 bản ghi trong collection Step 1:
use database_name;
Step 2:
db.collection_name.remove({tên trường : điều kiện}) Eg: db.Nhan_vien.remove({_Ma_nhan_vien:1})
5. Chèn dữ liệu trong collection
Step 1: Khai báo 1 biến tạm thời bất kỳ a = {_id:1,Ho_ten:"Alex Nguyen",Ngay_sinh:"10/10/1010"}
Step 2: Lưu
db.collection_name.save(a);
6. Update dữ liệu
db.collection_name({dieu kien: },{$set:{filed:"gia tri"}}) Eg: db.Nhan_vien.update({_id:1},{$set:{Ho_ten:"Alex Nguyen"}})
7. Select dữ liệu
db.collection_name.find({ten truong:"dieu kien"})
Eg: để lấy toàn bộ thông tin trong collection Nhan_vien, chúng ta dùng lệnh sau
db.Nhan_vien.find();
8. Export collection (thoát khỏi ứng dụng mongo trước)
mongoexport --db db_name --collection collection_name --out file_name.json Eg: mongoexport --db backup --collection Table1 --out backup.json
9. Import collection (thoát khỏi ứng dụng mongo trước)
mongoimport --db db_name --collection collection_name --out file_name.json Eg: mongoimport --db backup --collection Table1 --file backup.json
10. Dump database (thoát khỏi ứng dụng mongo trước)
mongodump -d db_name Eg: mongodump -d backup
11. Import database (thoát khỏi ứng dụng mongo trước)
Eg: mongorestore --db backup --objcheck dump/backup/
12. Drop Collection
db.collectionName.drop()
III. Sử dụng Custom Fields trong Liferay
1. Cài đặt portlets mongodb vào liferay

2. Sử dụng Custom Fields
Mục đích của Custom Fields là cho phép ta có thể mở rộng thêm các trường (field) cho từng mục dữ liệu (hay là từng bảng) tùy theo ta định nghĩa.
Để sử dụng custom fields, ta chọn Control Panel> Custom Fields.
Eg: Tạo mới một custom fields như dưới, đối tượng ta định nghĩa 1 custom fields là User.
Kiểu dữ liệu ta có thể tùy chọn, ở đây ta chọn kiểu text, với tên của custom fields là "Có vợ chưa?" -> Save.
Xong, bây giờ ta chọn Users and Organizations, xem detail 1 user bất kỳ
Ta click vào button Custom Fields, ta thấy có trường "Có vợ chưa?" như đã tạo. Như thế nghĩa là, bên cạnh các trường thông tin như "Screen Name", "First Name", "Last Name".... thì chúng ta có thể tạo thêm nhiều trường khác mà không thay đổi cơ sở dữ liệu của Liferay.

Link tham khảo:
http://docs.mongodb.org http://vietnux.com/kien-thuc/xem-chi-tiet-bai-viet/5-cac-lenh-co-ban-mongodb.html http://www.ghichep.hoangthienan.com/2012/03/gioi-thieu-mongodb-nosql/ http://docs.mongodb.org/manual/reference/commands/#renameCollection