美文网首页
mongo shell 操作笔记

mongo shell 操作笔记

作者: AizawaSayo | 来源:发表于2020-07-31 19:34 被阅读0次

mongod.conf 配置

// /usr/local/etc/mongod.conf
# systemLog Options
systemLog:
   destination: file
   path: "/usr/local/var/log/mongodb/mongod.log"
   logAppend: true
   quiet: true
# storage Options   
storage:
   #dbPath: "/Users/aizawasayo/data/db"
   dbPath: "/usr/local/var/mongodb"
   journal:
      enabled: true
# processManagement Options     
processManagement:
   fork: true
# net Options   
net:
   bindIp: 127.0.0.1
   port: 27017
# security Options
security:
   authorization: enabled
# setParameter Option   
setParameter:
   enableLocalhostAuthBypass: false
  1. 启动服务
    mongod --config /usr/local/etc/mongod.conf

    mongod --dbpath /usr/local/var/mongodb --logpath /usr/local/var/log/mongodb/mongo.log --fork --auth --port 27016
    (如果mongodb用的不是默认端口才加 --port xxxxx)

  2. 查看mongodb是否在运行
    ps aux | grep -v grep | grep mongod

  3. 进入mongo shell
    mongo
    mongodb指定了其他端口则:
    mongo --port 27016 (当然这个比较方便)
    mongo ip:port eg. mongo 103.24.168.208:27016

  4. 查看数据库
    show dbs

  5. 切换admin数据库
    use admin 创建管理员账户必须要到admin数据库

  6. 创建超级管理员账户
    db.createUser({user:'root',pwd:'root',roles:['root']})
    超级用户不受访问限制
    db.createUser()中的参数为一个对象,属性分别表示账号名、密码、角色(一个账号可以有多个角色)

roles 用户角色:

  • 数据库用户角色:read、readWrite;
  • 数据库管理角色:dbAdmin、dbOwner、userAdmin;
  • 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
  • 备份恢复角色:backup、restore;
  • 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
  • 超级用户角色:root
  1. 切换到blog数据
    use blog

  2. 创建普通账号
    db.createUser({user:'aizawasayo',pwd:'123456',roles:['readWrite']})

  3. 修改用户密码
    use admin
    db.changeUserPassword("username", "xxx")

  4. 查看用户信息
    db.runCommand({usersInfo:"userName"})

  5. 修改密码和用户信息
    db.runCommand( { updateUser:"username", pwd:"xxx",...})

  6. 停止mongodb服务
    use admin
    db.auth('username','pwd')身份验证
    db.shutdownServer()关闭服务进程

  7. 更改集合的某个字段名
    db.getCollection('集合名').update({}, {$rename : {"被更改的字段" : "新字段名"} },{ multi:true })

    db.集合名.updateMany({}, {$rename : {"被更改的字段" : "新字段名"} })
    举例:
    db.getCollection('boards').updateMany({}, {$rename : {'updated' : 'updated_time'}})

注:db.getCollectiondb.<collectionName>是等效的,可按需使用。例如集合名由_开头,db.getCollection就更适用。

  1. 复制一个集合的数据到另一个集合
    db.被复制的集合名.find().forEach(function (x){ db.复制到哪个集合名.insert(x) })
    指定复制哪些字段
    db.被复制的集合名.find().forEach(function (x){ db.复制到哪个集合名.insert({ name: x.name, type: x.type }) })

  2. 清空集合数据
    db.集合名.remove({})

  3. 批量删除集合中的某个字段

  1. 删除集合中多余的主键
    先查看集合所有主键:db.users.getIndexes() 可以看到包含该集合所有主键的数组
    再删除不再使用的即可:db.users.dropIndex({email:1})

  2. 删除集合
    db.集合名.drop()

  3. 删除数据库
    use animal(切换到需要删除的数据库)
    db.dropDatabase()

相关文章

网友评论

      本文标题:mongo shell 操作笔记

      本文链接:https://www.haomeiwen.com/subject/xjterktx.html