mongoDB 常用命令

本贴最后更新于 946 天前,其中的信息可能已经时移俗易

一、拉取MongoDB镜像

docker pull mongo
默认会拉取最新的镜像

image.png

二、创建mongoDB容器

docker run -dit --name mymongo -p 27017:27017 mongo:latest --auth
参数说明:
-i:表示运行容器
-t:表示容器启动后会进入其命令行
-d:守护式方式创建容器在后台运行
--name:容器名称
-p 27017:27017:端口映射(宿主机端口:容器端口),mongoDB默认是27017端口
--auth:访问mongo需要鉴权(账号密码访问),这个参数要放在最后面,否则会报错

image.png

三、进入容器并访问mongoDB

docker exec -it mymongo /bin/mongo
进入容器并执行mongo命令,进入mongo shell命令行

image.png

四、创建mongoDB用户(连续操作第三步不要退出来)

  1. 先了解一下mongo用户权限
    read:允许用户读取指定数据库
    readWrite:允许用户读写指定数据库
    dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除、查看统计或访问system.profile
    dbOwner:允许用户在指定数据库中执行任意操作,增、删、改、查等
    clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限
    readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
    readWriteAnyDatabase:只在admin库中可用,赋予用户所有数据库的读权限
    userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库userAdmin权限
    dbAdminAnyDatabase: 只在admin数据库中可用,赋予用户所有数据库dbAdmin权限
    root:只在admin数据库中可用。超级管理员用户,超级权限

  2. 创建用户(这里我们创建一个用户,然后给他超级管理员权限)
    1、切换到admin库
    use admin
    2、创建账号
    db.createUser({"user":"test","pwd":"123456","roles":["root"]})
    参数说明:
    "user":"test":这个键值对表示用户名为test
    "pwd":"123456":这个键值对表示密码为123456
    "roles":["root"]:这个键值对是授权超级管理员权限,参考上面的mongo用户权限
    image.png
    3、验证用户
    db.auth("test","123456")
    image.png
    4、使用账号密码登陆数据库
    先退出mongoShell命令行(exit)
    我是直接退出重新进入了容器,因为进入容器的姿势不对,直接在进入容器的时候执行了mongo,直接进入了mongoShell命令行,所以我得退出容器,在重新进入容器,再通过账号密码进入mongoShell命令行
    image.png

    5、验证权限
    show dbs 相当于mysql里面的show databases
    如果能看到默认的数据库(admin、confing、local)说明没有问题
    如果不是用账号密码进入的mongoShell执行show dbs看不到数据库的,因为没有权限
    image.png

五、mongoDB常用命令

  1. 显示所有数据库
    show dbs
    image.png

  2. 创建数据库(不存在)/切换数据库(存在)
    use mydb
    image.png

  3. 创建集合
    db.createCollection("mycol")
    image.png

  4. 查看已有集合
    show collections
    show tables
    image.png

  5. 删除集合
    db.mycol.drop()
    image.png

  6. 删除数据库(删除当前使用的数据库)
    db.dropDatabase()
    image.png

  7. 集合中插入数据
    db.mycol.insertOne({"key":"val"}) 插入一个文档
    image.png
    db.mycol.insertMany([{"key1":"val"},{"key2":"val2"}]) 插入多个文档
    image.png

  8. 更新集合
    db.mycol.update({"key1":"val"},{$set:{"key1":"val11111"}})

    image.png更新操作符说明

    $set     {$set:{field:value}}          指定一个键并更新值若键不存在则创建
    $unset   {$unset:{field:1}}            删除一个键
    $inc     {$inc:{field:value}}          对数值类型进行增减
    $push    {$push:{field:value_arry}}    将数值追加到数组中若数组不存在则会进行初始化
    $pushAll {$pushAll:{field:value_arry}} 追加多个值到一个数组字段内
    $pull    {$pull:{field:_value}}        从数组中删除指定的元素
    $addToSet  {$addToSet:{field:value}}   添加元素到数组中具有排重功能
    $pop     {$pop:{field:1}}              删除数组的第一个或者最后一个元素
    
    
  9. 删除文档
    删除一个文档
    db.mycol.deleteOne({"key":"val"})
    image.png
    删除多个文档
    db.mycol.deleteMany({"title":"test"})
    image.png

    删除所有哦文档
    db.mycol.deleteMany({})

  10. 查询文档
    查询所有数据
    db.mycol.find()
    image.png

    单条件查询
    db.mycol.find({"key1":"val3"})
    image.png
    and条件查询
    db.mycol.find({"title":"test","key1":"val5"})
    image.png
    or条件查询
    db.mycol.find({$or:[{"key1":"val3"},{"key1":"val5"}]})
    image.png

回帖
请输入回帖内容 ...