Install Key
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
Create a list file for mongodb for ubuntu
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list
Reload local package database
apt-get update
Install mongodb package
sudo apt-get install -y mongodb-org=2.6.9 mongodb-org-server=2.6.9 mongodb-org-shell=2.6.9 mongodb-org-mongos=2.6.9 mongodb-org-tools=2.6.9
Pin a specific version
echo "mongodb-org hold" | sudo dpkg --set-selections
echo "mongodb-org-server hold" | sudo dpkg --set-selections
echo "mongodb-org-shell hold" | sudo dpkg --set-selections
echo "mongodb-org-mongos hold" | sudo dpkg --set-selections
echo "mongodb-org-tools hold" | sudo dpkg --set-selections
Install trên Centos
[mongodb-org-3.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.0/x86_64/
gpgcheck=0
enabled=1
[mongodb-org-2.6]
name=MongoDB 2.6 Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=1
yum install mongo-10gen mongo-10gen-server
Kết nối db
mongo
Show list database
show dbs
Chuyển database
use [dbname]
Hiện danh sách các collection
db.getCollectionNames()
Insert 1 Document (Insert lần đầu sẽ tự động tạo Database + Collection)
db.ngon.insert({name: "Hoang Ha", age: "30", address: "6996 Cao Thang"})
Khi insert nó cũng tự động sinh ra 1 ID duy nhất
Find
db.ngon.find()
Tìm kiếm toàn bộ document trong collection "ngon"
Tìm kiếm theo điều kiện
db.ngon.find({"name" : "ha"}, {age: 1, _id: 0})
collec query criteria modifier
Collection : Điều Kiện: Giá trị trường trả về
Điều kiện là số 1 tương ứng với trường cần lấy - Đứng trước
Điều kiện là số 0 tương ứng với trường không cần lấy - Đứng sau
Mặc trường ID sẽ hiện
db.ngon.find({age : {$lt:"31"}}, {age:1, name: 1, _id: 0})
Mặc định thì khi find chỉ hiện 20 giá trị đầu tiên
Mặc định sau 10' thì cursor sẽ tự hủy. Để set lại, tuy nhiên sẽ phải hủy manual
var myCursor = db.inventory.find().addOption(DBQuery.Option.noTimeout);
Update
db.ngon.update({age: {$gt: "18"}}, {$set: {address : "Cao Thang"}})
Điều kiện Set giá trị
Mặc định nó sẽ tìm từ trên xuống và chỉ thực hiện 1 document
db.ngon.update({age: {$gt: "18"}}, {$set: {address : "Cao Thang"}}, {multi:true})
Để thực hiện toàn bộ các document thì thêm multi:true
Delete
db.ngon.remove({address: "169 Cao Thang"})
Delete database
db.dropDatabase()
Backup
Cơ chế lưu dữ liệu của mongo tương đương MyIsam của Mysql, nên khi cần chỉ cần copy file database sang server khác + phân quyền + restart mongo là tự nhận.
mongodump
Sẽ backup toàn bộ database vào thư mục dump
mongodump --out /home --collection ngon --db test
Backup chỉ 1 collection và chỉ định đầu ra
mongodump --host 192.168.182.128 --port 27017 -out /root/test
Backup remote host
mongorestore [directory_dump]
Restore lại toàn bộ database
mongorestore --db cuchuoi cuchuoi/
Restore lại database cuchuoi vào database cuchuoi
Tạo user quản trị
use admin
db.createUser({ user: "SuperAdmin", pwd: "123456", roles: [ { role: "readWrite", db: "test" } ] })
db.createUser({ user: "SuperAdmin1", pwd: "123456", roles: [ { role: "read", db: "test" } ] })
Truy cập
mongo -u test -p password localhost:27017/test
Các loại role trên Mongo
read, readWrite, dbAdmin, userAdmin, clusterAdmin, readAnyDatabase, readWriteAnyDatabase,
userAdminAnyDatabase, dbAdminAnyDatabase
Thêm log query vào file log. File cấu hình thêm
diaglog = 3
verbose=true
Replica set
Sửa file config
nojournal = true
port = 27017
bind_ip = 192.168.182.128
fork = true
replSet = rsName
Truy cập mongo
rs.initiate()
Add các secondary vào
rs.add(“ip_of_secondary_node_1”)
Kiểm tra trạng thái
rs.status()
Kiểm tra từng máy và sự đồng bộ database
rs.isMaster
Lưu ý: Với cấu hình trên thì khi server Primary mà down, thì secon sẽ trở thành Primary. Sau khi Primary up, thì sẽ bị thành Secon