MongoDB基本命令使用
文章目录
1. 数据库操作
1.1 启动/关闭MongoDB服务
net start MongoDB 解释: 开启服务
net stop MongoDB 解释: 关闭服务
sc delete MongoDB 解释: 删除服务
mongod --install --serviceName "MongoDB" 解释: 安装服务
1.2 启动mongodb客户端
进入bin目录下 执行 `mongo`或`mongo.exe`命令
1.3 创建账户
1. use admin --切换到某某db下
2. db.createUser({user:'zhang',pwd:'1234',roles:['root']}) --创建用户,账号,密码,权限
3. db.auth('zhang','1234') --登录
1.4 查看当前数据库
- 默认"test"
db
1.5 查询全部数据库
show dbs
1.6 创建数据库
- 数据库存在切换,不存在创建
- 新创建的数据库不显示,至少要有一个集合才显示
use 数据库名称
1.7 删除数据库
- 删除当前使用的数据库
db.dropDatabase()
2.集合操作
- 集合相当于关系数据库中的表,一个数据库可以有多个集合,一个集合是将同类型的文档管理起来。
2.1 创建集合
db.createCollection(name,options)
// name 表示集合名
// options 表示创建参数--可忽略不写
2.2 查看集合
show collections
2.3 删除集合
db.name.drop()
// name 表示要删除集合的名称
2.4 扩展 设置参数
- 在demo数据库中,创建book集合,并限定最大文档数为3
- 参数capped: 如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。
- 参数size: 为固定集合指定一个最大值,以千字节计(KB)。如果 capped 为 true,必须指定size字段。
- 参数max: 指定固定集合中包含文档的最大数量。
use demo
db.createCollection('book', { capped: true,size: 1024 , max : 3 } )
3.文档操作
- mongodb中的文档格式为json
- 示例: 两个key: _id主键和name
{
"_id" : ObjectId("5b2cc4bfa6a44812707739b5"),
"name" : "小h"
}
3.1 插入命令
- 每个文档默认是一个_id为主键,主键默认类型为ObjectId(对象类型)
- mongodb会自动生成主键值
db.集合名称.insert(document)
示例:
db.student.insert({"name":"兮赫","age":18})
3.2 查询命令
- 查询全部–返回所有内容
db.集合名称.find()
// 示例:
db.student.find()
- 条件查询–返回符合条件内容
db.集合名称.find(json条件)
// 示例:
db.student.find({"name":"兮赫"})
- 投影查询
- 控制显示那些字段,不显示那些字段
- 0 : 表示不显示
- 1 : 表示显示
- 控制显示那些字段,不显示那些字段
db.集合名称.find(json条件,{显示字段名:1,不显示字段名:0})
//示例:
db.student.find({"name":"兮赫"},{name:11,age:1,_id:0})
3.3 更新文档
- 命令格式:
db.collection.update(query,update,options)
query:查询条件, 相当于sql语句的where
update:更新的文档内容
options:选项
- 替换文档
- 将符合条件"name":"兮赫"的第一个文档替换为{“name”:“兮赫呐”,“age”:19}
db.student.update({"name":"兮赫"},{"name":"兮赫","age":19})
- $set 修改器
- 使用$set修改器,来指定要修改的key,key存在修改,不存在创建
-- 存在修改
db.student.update({"name":"兮赫"},{$set : {"name":"xihe"}})
-- 不存在,创建
db.student.update({"name","兮赫"},{$set : {"sex":"男"}})
- multi 替换所有
- multi: false表示更新第一个匹配的文档,true表示更新所有匹配的文档
db.student.update({"name":"兮赫"},{$set :{"age":18}},{multi:false})
3.4 删除文档
-
db.集合名称.remove(条件)
-
删除符合条件的文档
db.student.remove({"name":"兮赫"})
- 通过id删除
db.student.remove({"_id":ObjectId("xxxxxxxxxxxxxxxxxxx")})
- 删除所有文档
db.student.remove({})
4.用户操作
4.1 创建用户
db.createUser({
user:"name",
pwd:"password",
customData:{information},
roles:[
{ role: "<role>", db: "<database>" } | "<role>",
...
]
})
roles.role : 用于设置角色,取值参考“内置角色”
roles.db : 用于设置哪个数据库,配置role使用(不同的数据库db,具有不同的角色role)
- 创建具有root权限的角色,此角色权限数据库只能是admin
db.createUser({
user:"root",
pwd:"1234",
roles:[{"role":"root","db":"admin"}]
})
- 创建权限数据库为demo的用户
db.createUser({
user:"test",
pwd:"1234",
roles:[{"role":"readWrite","db":"demo"}]
})
- 内置角色 role
角色分类 | 取值 | 描述 |
---|---|---|
超级用户角色 | root | 超级账户和权限,只在admin中可用 |
数据库用户角色 | read | 授权User只读数据的权限,允许用户读取指定的数据库 |
readWrite | 授权User读/写数据的权限,允许用户读/写指定的数据库 | |
数据库管理角色 | dbAdmin | 在当前的数据库中执行管理操作,如索引的创建、删除、统计、查看等 |
dbOwner | 在当前的数据库中执行任意操作,增、删、改、查等 | |
userAdmin | 在当前的数据库中管理User,创建、删除和管理用户。 | |
集群管理角色 | clusterAdmin | 授权管理集群的最高权限,只在admin中可用 |
clusterManager | 授权管理和监控集群的权限 | |
hostManager | 管理server | |
clusterMonitor | 授权监控集群的权限,对监控工具具有readonly的权限 | |
备份恢复角色 | backup | |
restore | ||
所有数据库角色 | readAnyDatabase | 授权在所有的数据库上读取数据的权限,只在admin 中可用 |
readWriteAnyDatabase | 授权在所有的数据库上读写数据的权限,只在admin 中可用 | |
userAdminAnyDatabase | 授权在所有的数据库上管理User的权限,只在admin中可用 | |
dbAdminAnyDatabase | 授权管理所有数据库的权限,只在admin 中可用 |
4.2 查询用户
- 查询当前库下所有用户
show users
4.3 修改用户
- 语法格式
db.updateUser(
"<username>",
{
customData : { <any information> },
roles : [
{ role: "<role>", db: "<database>" } | "<role>",
...
],
pwd: "<cleartext password>"
},
writeConcern: { <write concern> }
)
- 修改root用户的角色为readWriteAnyDatabase
use admin
db.updateUser("root",{roles:[{role:"readWriteAnyDatabase",db:"admin"}]})
4.4 修改密码
格式: db.changeUserPassword(“username”,“newPassword”)
- 修改root用户密码为root
db.changeUserPassword("root","root")
4.5 删除用户
格式: db.dropUser(“用户名”)