mongo 命令操作
使用用户名和密码连接
mongo -u admin -p admin
如果连接的是从库,默认无法读写,解决方案
rs.secondaryOk()
查看数据库
show dbs
创建数据库
use runoob
删除 runoob 数据库
use runoob
db.dropDatabase()
插入数据
db.runoob.insert({"name":"菜鸟教程"})
查看数据库下的文档
# local 是数据库名
use local
show collections
查看所有文档的内容
# runoob 是文档名称
db.runoob.find()
导入 json 文件
# 导入 json 文件
--db : 数据库
-c : collections 名
--type : 类型
# 若出现以下错误 Failed: invalid JSON input. 可加上 --legacy
--legacy :官网从4.2开始默认识别Json v2.0, 使用 --legacy 识别json v1.0
mongoimport --db ss_data -c cf_time_point --type json cf_time_point.json
或
mongoimport --authenticationDatabase admin -u admin -p admin --db ss_data -c cf_time_point --file ./cf_time_point.json --legacy
设置用户密码
use admin
db.createUser({ user: "admin", pwd: "admin", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })
db.createUser({user: "root",pwd: "root", roles: [ { role: "root", db: "admin" } ]})
查看用户
show users
数据库备份
mongodump -h dbhost -d dbname -o dbdirectory
eg: mongodump -h 127.0.0.1 -d test -o /home/dump
-h:
MongoDB 所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017
-d:
需要备份的数据库实例,例如:test
-o:
备份的数据存放位置,eg:/home/dump, 当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。
注意,如果数据库设置了密码需要使用 --authenticationDatabase admin
mongodump -h 127.0.0.1 --authenticationDatabase admin -u root -p root -d runoob -o /tmp/mongodb_dump
数据库恢复
mongorestore -h <hostname><:port> -d dbname <path>
-h:
指明数据库宿主机的IP
-u:
指明数据库的用户名
-p:
指明数据库的密码
-d:
指明数据库的名字
-c:
指明collection的名字
-o:
指明到要导出的文件名
-q:
指明导出数据的过滤条件
--authenticationDatabase:
验证数据的名称
--gzip:
备份时压缩
--oplog:
use oplog for taking a point-in-time snapshot
--drop:
恢复的时候把之前的集合drop掉
eg:
1.全库备份中恢复单库(基于之前的全库备份)
mongorestore -h 10.0.0.152:27017 -uroot -proot --authenticationDatabase admin --drop /home/mongod/backup/full/test/
2.恢复test库
mongorestore -h 10.0.0.152:27017 -uroot -proot --authenticationDatabase admin -d test /home/mongod/backup/test/
3.恢复test库下的vast集合
mongorestore -h 10.0.0.152:27017 -uroot -proot --authenticationDatabase admin -d test -c vast /home/mongod/backup/test/vast.bson
4.--drop参数实践恢复
# 恢复单库
mongorestore -h 10.0.0.152:27017 -uroot -proot --authenticationDatabase admin -d test --drop /home/mongod/backup/test/
# 恢复单表
mongorestore -h 10.0.0.152:27017 -uroot -proot --authenticationDatabase admin -d test -c vast --drop /home/mongod/backup/test/vast.bson
mongoexport/mongoimport与mongodump/mongorestore的对比
- mongoexport/mongoimport 导入/导出的是 JSON 格式,而 mongodump/mongorestore 导入/导出的是BSON格式。
- JSON 可读性强但体积较大,BSON则是二进制文件,体积小但对人类几乎没有可读性。
- 在一些 mongodb 版本之间,BSON格式可能会随版本不同而有所不同,所以不同版本之间用mongodump/mongorestore可能不会成功,具体要看版本之间的兼容性。当无法使用BSON进行跨版本的数据迁移的时候,使用JSON格式即mongoexport/mongoimport是一个可选项。跨版本的mongodump/mongorestore并不推荐,实在要做请先检查文档看两个版本是否兼容(大部分时候是的)。
- JSON虽然具有较好的跨版本通用性,但其只保留了数据部分,不保留索引,账户等其他基础信息。使用时应该注意。

浙公网安备 33010602011771号