Mongodb中的操作方法的命令非常标准,这有助于我们能够理解、更好记住这些方法,达到熟练掌握。
1、用户
常识操作,无非包含了添、删、改、查。但有一个非常有意思的事情是,这些操作只能在相对应的db中,怎么理解呢?打比方说要给guohu库添加新用户,必需先执行use guohu,然后使用db.createUser()的方法,其他的方式类似。
db.createUser({user:"root",pwd:"root",roles:["root"]})
db.createUser({user:"guohu",pwd:"123456",roles:["readWrite"]})
db.dropUser("guohu")
db.updateUser("guohu",{roles:["dbAdmin"]})
db.updateUser("wanda",{pwd:"wanda"})
db.getUser("guohu")
db.getUsers()
#提供了一种修改密码方法,这种方法和使用updateUser修改,可能是因为缓存的问题,会出现一点小插曲,但如果修改完后,重启mongod,就没有问题了。
db.changeUserPassword("guohu","123456")
#添加、移除角色,也可以使用updateUser的方法
db.grantRolesToUser("wanda",["dbAdmin"])
db.revokeRolesFromUser("wanda",["dbAdmin"])
2、角色
这一块用的相对少,所以就简单罗列一下方法,本人比较懒,方法也是添、删、改、查,在加上一些快捷的延伸操作
db.createRole() db.dropRole() db.dropRoles() db.updateRole() db.getRole() db.getRoles() db.grantPrivilegesToRole() db.revokePrivilegesFromRole() db.grantRolesToRole() db.revokeRolesFromRole()
3、Db
#目前没还没有亲测,这2个复制操作的区别。在不同实例间复制出现权限验证不通过,无法完成。但在同一实例 #中使用db.copyDatabase()可以完成. db.copyDatabase(fromdb, todb, fromhost, username, password, mechanism) db.cloneDatabase(from) #删除后dbPath目录中的数据和索引会被删除 db.dropDatabase() #锁定/解除数据库写操作。 db.fsyncLock() db.fsyncUnlock() #关闭 db.shutdownServer()
4、集合
5、mongodump、mongorestore、mongoexport、mongoimport
这两组操作的主要区别:1)mongodump和mongorestort主要是针对数据库的备份,而后者是针对collection的备份。2)备份数据的格式不同,mongodump和mongorestort备份格式BJON,而后者是JSON。前者的的数据小很多,但后者的数据可读性较强,这里主要介绍常规的数据库备份使用的mongodump和mongorestore
完整的例子 #在这里例子中,默认的-h localhost:27017 如果是本地实例,可以省略。 #-d如果不指定,将dump所有的数据库. #--gzip打包压缩导出 #--oplog这个特别注意,用来避免在dump操作时,还有客户端对db进行操作,进而影响dump的数据不准确 #加上--oplog后,dump的操作都将保存在.oplog文件中.在mongorestore中使用. mongodump -h 192.168.80.122:27017 -d guohu -u root -p root -o /data/bak/ --gzip --oplog #authenticationDatabase主要是用来指定-u 这个用户所在数据库. mongorestore -h 192.168.80.122:27017 -d guohu -u root -p root --authenticationDatabase admin /data/bak