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的对比

  1. mongoexport/mongoimport 导入/导出的是 JSON 格式,而 mongodump/mongorestore 导入/导出的是BSON格式。
  2. JSON 可读性强但体积较大,BSON则是二进制文件,体积小但对人类几乎没有可读性。
  3. 在一些 mongodb 版本之间,BSON格式可能会随版本不同而有所不同,所以不同版本之间用mongodump/mongorestore可能不会成功,具体要看版本之间的兼容性。当无法使用BSON进行跨版本的数据迁移的时候,使用JSON格式即mongoexport/mongoimport是一个可选项。跨版本的mongodump/mongorestore并不推荐,实在要做请先检查文档看两个版本是否兼容(大部分时候是的)。
  4. JSON虽然具有较好的跨版本通用性,但其只保留了数据部分,不保留索引,账户等其他基础信息。使用时应该注意。
posted @ 2021-11-03 16:51  klvchen  阅读(157)  评论(0)    收藏  举报