聚合(aggregate): db.集合.aggregate([{管道:{表達式}}]) db.集合.aggregate([ {管道1:{表達式1}}, {管道2:{表達式2}}, ... ...]) 管道1的結果作為管道2的輸入. $group:分組 {$group:{ _id:'$gender' ...
聚合(aggregate): db.集合.aggregate([{管道:{表達式}}])
db.集合.aggregate([
{管道1:{表達式1}},
{管道2:{表達式2}},
... ...
])
管道1的結果作為管道2的輸入.
$group:分組 {$group:{
_id:'$gender',
count:{$sum:1}
}}
$match:過濾(年齡大於19) {$match:{age:{$gt:19}}}
$project:投影(和find第二組參數一樣,1顯示,0不顯示) {$project:{_id:0,counter:1}}
$sort:排序(和sort一樣,1升序,-1降序) {$sort:{_id:-1}}
$skip(跳過多少條文檔,和skip一樣) {$skip:2}
$limit(獲取多少條文檔,和limit一樣) {$limit:2}
$unwind(可以把數組拆分成單條文檔) {$unwind:'$xxx'}
索引(1:升序索引,2:降序索引):db.集合.ensureIndex({屬性1:1,屬性2:1})
查看文檔索引 db.集合.getIndex()
刪除索引 db.集合.dropIndex('索引名稱')
角色: root 只在admin資料庫可用,超級賬號
Read:允許用戶讀取指定資料庫
readWrite:允許用戶讀寫指定資料庫
創建超級管理員:
db.createUser({user:'admin',pwd:'123',roles:[{role:'root',db:'admin'}]})
啟用驗證 修改/etc/mongodb.conf:
security:
authorization: enabled
或者 auth=true
用超級管理員創建普通用戶:
db.createUser({user:'user1',pwd:'123',roles:[{role:'readWrite',db:'students'}]})
登陸: mongo -u user1 -p 123 --authenticationDatabase students
副本集:數據備份等:
mongod --bind_ip x.x.x.x --porx 27018 --dbpath ~/Desktop/t1 --replSet rs0
mongod --bind_ip x.x.x.x --porx 27019 --dbpath ~/Desktop/t2 --replSet rs0
連接 mongo --host x.x.x.x --port 27018
初始化主伺服器: >rs.initiate() 查看狀態 rs.status()
添加副本集: rs.add('x.x.x.x:27019')')
刪除副本集:rs.remove('x.x.x.x:27019')')
在從伺服器中讀取操作需要設置 rs.slaveOk()
自動主從切換:一個伺服器關閉另一個自動切換成主伺服器.
資料庫備份:mongodump -u user1 -p 123 --authenticationDatabase 資料庫名 -d 備份資料庫 -o 存放位置
資料庫恢復: mongorestore -h 伺服器地址 -d 需要恢復的資料庫 --dir 備份資料庫位置