增删改查
基础要素
- 数据库
- 集合
- 文档
优点
- 易扩展、高性能、灵活的数据模型
- MongoDB中的数据存储是以Bson的形式存储的,Bson是二进制的json,所以看上去记录的形式类似于json数据
- MongoDB中集合中的数据不同于关系型数据库中的数据,MongoDB中文档结构可以不同,因此扩展性非常好
缺点
- 数据容易重复存储,占用空间大
进入数据库
- windows
mongo -u username
- linux
mongod
常用指令
作用 | 语法 | 备注 |
---|---|---|
显示当前数据库 | db | |
当前数据库状态 | db.stats() | |
当前数据库版本 | db.version() | |
创建用户 | db.createUser() | |
修改用户密码 | db.updateUser("用户名":{pwd:'xxxxx'}) | |
密码认证 | db.auth({"admin":"password"}) | 提权 |
修改密码1 | db.changeUserPassword("usertest","changepass") | |
修改密码2 | db.updateUser("usertest",{pwd:"changepass1"}) | |
替换权限 | db.updateUser("usertest",{roles:[ {role:"read",db:"testDB"} ]}) | |
新增权限 | db.grantRolesToUser("usertest", [{role:"readWrite", db:"testDB"}]}) | |
删除用户 | db.dropUser('用户名') | |
查看当前的 host和端口 | db.getMongo() | |
删除当前的数据库 | db.dropDatabase() |
// 创建用户
db.createUser({user:'admin',pwd:'452301',roles:[{role:'root',db:'test'}]})
增加数据
作用 | 语法 | 备注 |
---|---|---|
添加一条 | db.[集合名].insert({name:'zhaos',age:23,sex:'f'}); |
//如果不指定 _id 系统自动添加 object_id
db.test.insert({_id:3, name:'zhaos1',age:1,sex:'f'})
//使用数据 一次插入多条数据
db.test.insert([{_id:2, name:'zhaos1',age:1,sex:'f'},{_id:5, name:'zhaos2',age:2,sex:'f'}])
db.test.insert({name:'zhaos222',age:{type:String,default:"23"},sex:'f'})
// 默认删除所有匹配到的
db.test.remove({sex:'f'}, 删除数量)
// 替换数据
db.test.update({name:'zhaos1'},{'name':"new1"})
// 更新数据[$set]
db.test.update({name:'new1'},{$set:{'name':"new2"}})
修改器$xxxx
名称 | 作用 |
---|---|
$set | 添加/更新一个数据,如果该数据不存在,则创建 |
$unset | 去除数据上面的一个属性 |
重命名 | $rename |
增长某个列 | $inc |
监听某个值修改时 | $setOnInsert |
$set
db.series.find({xxx:xxx}).forEach(function(item){
db.series.update({_id:item.id}, "$set":{newKey:newVal})
})
$unset
常用指令use
作用 | 语法 | 备注 |
---|---|---|
切换数据库 | use [db_name] | 空数据库的话,会自动创建 |
常用指令show
作用 | 语法 | 备注 |
---|---|---|
查看所有数据库 | show dbs/databases | |
查看所有集合 | show tables/collections |
常用配置文件
作用 | 位置 | 备注 |
---|---|---|
日志文件 | /var/log/mongodb/mongod.log | linux |
权限
作用 | 语法 | 备注 |
---|---|---|
超级管理员 | root | 最大权限 |
超级管理员 | userAdminAnyDatabase | 有分配角色和用户的权限,但没有查写的权限 只在admin数据库中可用 |
超级管理员 | dbAdminAnyDatabase | 只有操作数据库的权限,没有分配角色的权限 只在admin数据库中可用 |
超级管理员 | readAnyDatabase | 能读取所有数据库 只在admin数据库中可用 |
超级管理员 | readWriteAnyDatabase | 能写所有数据库 只在admin数据库中可用 |
允许在当前DB中执行任意操作 | dbOwner | 能管理指定某一数据库 |
读取指定数据库 | read | 数据库用户角色 |
读写指定数据库 | readWrite | 数据库用户角色 |
允许用户在指定数据库中执行管理函数 | dbAdmin | 如索引创建、删除,查看统计或访问system.profile |
允许用户向system.users集合写入 | userAdmin | 可以找指定数据库里创建、删除和管理用户 |
赋予管理集群的最高权限 | clusterAdmin | 集群管理角色 |
赋予管理和监控集群的权限 | clusterManager | 只在admin数据库中可用 |
赋予监控集群的权限 | clusterMonitor | 对监控工具具有readonly的权限 |
赋予管理Server | hostManager | 集群管理角色 |
备份 | backup | 备份恢复角色 |
恢复 | restore | 备份恢复角色 |