1 介绍
1.1 MongoDB与关系型数据库术语对比
1.2 MongoDB与关系型数据库存储数据对比
1.3 RDBMS 与 MongoDB 对应的术语
1.4 MongoDB的数据类型
2 用户管理
2.1 MongoDB中的常用权限
权限名 | 描述 |
---|---|
read | 允许用户读取指定数据库 |
readWrite | 允许用户读写指定数据库 |
dbAdmin | 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile |
userAdmin | 允许用户向system.users集合写入,可以在指定数据库里创建、删除和管理用户 |
clusterAdmin | 只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限 |
readAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的读权限 |
readWriteAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的读写权限 |
userAdminAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的userAdmin权限 |
dbAdminAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限 |
root | 只在admin数据库中可用。超级账号,超级权限 |
2.2 创建用户
mongodb有一个用户管理机制,对用户的管理必须先进入admin库中。
2.2.1 切换到admin库
use admin
2.2.2 创建用户
创建用户的函数格式如下:
db.createUser({
user: "<name>",
pwd: "<cleartext password>",
customData: { <any Object Data> },
roles: [
{ role: "<role>", db: "<database>" } | "<role>",
...
]
})
1)user:新建用户名。
2)pwd:新建用户密码。
3)customData:存放一些用户相关的自定义数据,该属性也可忽略。
4)roles:数组类型,配置用户的权限。
示例:db.createUser({user:‘bjsxt’,pwd:‘bjsxt’,roles:[{role:‘root’,db:‘admin’}],customData:{infomation:‘first user’}})
2.2.3 重启MongoDB
MongoDB默认不做任何的用户权限认证,如果需要进行用户权限认证,则需要在启动的时候做认证参数开启,配置如下:
dbpath=/usr/local/mongodb/data/db/
logpath=/usr/local/mongodb/logs/mongodb.log
port=27017
fork=true
auth=true
2.2.4 登录认证
登录的用户必须进入到admin库才能进行登录认证。
- 进入admin库
use admin
- 认证
db.auth('用户名', '密码');
2.2.5 查看用户
拥有用户管理权限的用户才能查看用户信息。
- 进入admin库:use admin
- 查看
show users
或
db.system.users.find()
2.2.6 更新用户
- 进入admin库:use admin
- 更新用户
db.updateUser('要更新的用户名', {新的用户数据对象});
2.2.7 修改用户密码
- 进入admin库:use admin
- 修改密码
db.changeUserPassword("用户名","新密码")
2.2.8 删除用户
- 进入admin库:use admin
- 删除用户
db.dropUser('用户名')
3 Database操作
3.1 创建数据库
在MongoDB中创建数据库的命令使用的是use命令。该命令有两层含义:
- 切换到指定数据库。
- 如果切换的数据库不存在,则创建该数据库。
我们使用use命令创建一个名为sxttest的数据库。
use sxttest
3.2 查看数据库
我们可以通过show dbs | show databases
命令查看当前MongoDB中的所有数据库。
3.3 删除数据库
在MongoDB中使用db.dropDatabase()
函数来删除数据库。
在删除数据库之前,需要使用具备dbAdminAnyDatabase角色的管理员用户登录,然后切换到需要删除的数据库,执行db.dropDatabase()函数即可。删除成功后会返回一个{ “ok” : 1 }的JSON字符串。
4 Collection操作
MongoDB中的集合是一组文档的集,相当于关系型数据库中的表。
4.1 创建集合
MongoDB使用db.createCollection()函数来创建集合。
语法格式:
db.createCollection(name, options)。
name: 要创建的集合名称。
options: 可选参数, 指定有关内存大小及索引的选项。
- options 可以是如下参数。
在插入文档时,MongoDB 首先检查固定集合的 size 字段,然后检查 max 字段。
4.1.1 默认创建集合
在MongoDB中,我们也可以不用创建集合,当我们插入一些数据时,会自动创建集合,并且会使用文档管理命令中的集合名称作为集合的名称。文档管理命令后续课程详解。
向库中插入一条数据
db.collname.insert({'name':'bjsxt'});
show dbs;
4.1.2 函数创建集合
4.1.2.1 无参数创建集合
我们也可以根据自己的情况创建集合。在数据库中创建一个名为test的集合,该集合创建时不指定任何参数。
db.createCollection('test')
4.1.2.2 有参数创建集合
在数据库中创建一个名为test2的固定集合,整个集合空间大小为2000000kb,文档最大个数为1000。
db.createCollection('test2', {'capped':true, 'size':2000000, 'max':1000});
4.2 查看集合
如果要查看已有集合,可以使用 show collections 或 show tables 命令。
show collections
show tables
4.3 查看集合详情
如果要查看已有集合的详情,可以使用 db.集合名.stats() 命令。
db.test2.stats();
4.4 删除集合
如果我们要删除集合,需要先切换到需要删除集合所在的数据库,使用drop()函数删除集合即可。
删除集合的语法格式为:db.集合名称.drop()。
删除test2集合
db.test2.drop();