聚合(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 备份数据库位置