Skip to main content

增删改查

基础要素

  • 数据库
  • 集合
  • 文档

优点

  • 易扩展、高性能、灵活的数据模型
    • 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"})提权
修改密码1db.changeUserPassword("usertest","changepass")
修改密码2db.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.loglinux

权限

作用语法备注
超级管理员root最大权限
超级管理员userAdminAnyDatabase有分配角色和用户的权限,但没有查写的权限 只在admin数据库中可用
超级管理员dbAdminAnyDatabase只有操作数据库的权限,没有分配角色的权限 只在admin数据库中可用
超级管理员readAnyDatabase能读取所有数据库 只在admin数据库中可用
超级管理员readWriteAnyDatabase能写所有数据库 只在admin数据库中可用
允许在当前DB中执行任意操作dbOwner能管理指定某一数据库
读取指定数据库read数据库用户角色
读写指定数据库readWrite数据库用户角色
允许用户在指定数据库中执行管理函数dbAdmin如索引创建、删除,查看统计或访问system.profile
允许用户向system.users集合写入userAdmin可以找指定数据库里创建、删除和管理用户
赋予管理集群的最高权限clusterAdmin集群管理角色
赋予管理和监控集群的权限clusterManager只在admin数据库中可用
赋予监控集群的权限clusterMonitor对监控工具具有readonly的权限
赋予管理ServerhostManager集群管理角色
备份backup备份恢复角色
恢复restore备份恢复角色