聚合 (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 备份数据库位置
来源: http://www.bubuko.com/infodetail-2637282.html