索引。
基于内存中的读写操作,比在硬盘中快得多。
步骤一:创建大量数据
插入十万条数据:
for(i=0;i<10000;i++)db.t1.insert({name:test+i,age:1})
步骤二:数据查找性能分析
命令之后接"explain('executionStats')"
例如:db.t1.find({name:"test10000"}).explain("executionStats")
未建索引之前用时77ms。
步骤三:建立索引
基于name建立索引。
- 1 代表升序
-
-1代表降序
建立索引之后的时间有所降低。
超级管理员
- 为了更安全的访问mongodb,需要访问者提供用户名和密码,于是需要在mongodb中创建用户
- 采用了角色-用户-数据库的安全管理方式
- 常用系统角色如下:
- root:只在admin数据库中可用,超级账号,超级权限(是可以针对任何数据库的)
- Read:允许用户读取指定数据库
- readWrite:允许用户读写指定数据库(只允许某些个数据库)
- 创建超级管理用户
use admin
db.createUser({
user:'admin',
pwd:'123',
roles:[{role:'root',db:'admin'}]
})
启用安全认证
- 修改配置文件
sudo vi /etc/mongod.conf
- 启用身份验证
- 注意:keys and values之间一定要加空格, 否则解析会报错
security:
authorization: enabled
- 重启服务
sudo service mongod stop
sudo service mongod start
- 终端连接
mongo -u 'admin' -p '123' --authenticationDatabase 'admin'
普通用户管理
- 使用超级管理员登录,然后进入用户管理操作
- 查看当前数据库的用户
use test1
show users
- 创建普通用户
db.createUser({
user:'t1',
pwd:'123',
roles:[{role:'readWrite',db:'test1'}]
})
- 终端连接
mongo -u t1 -p 123 --authenticationDatabase test1
切换数据库,执行命令查看效果
修改用户:可以修改pwd、roles属性
db.updateUser('t1',{pwd:'456'})