场景一:shell 命令连接 mongo,且删除指定数据库
-
本地安装了 mongo 客户端的情况,可以直接执行
mongo db_host:db_port/db_name --eval "db.dropDatabase()"
-
我本地是没有安装 mongo 的,但是有 mongo 的容器,所以我可以再加一层,通过命令进入容器,然后连接数据库,再执行删除
docker exec mongo mongo db_host:db_port/db_name --eval "db.dropDatabase()"
- docker exec mongo 进入 mongo 容器,前提是你已经拉取了 mongo 镜像,创建了容器并且容器正在运行
- mongo db_host:db_port/db_name 连接指定数据库
- –eval “db.dropDatabase()” 调用删库函数
场景二:shell 命令连接 mongo,将查询结果输出到文件
-
本地安装了 mongo 客户端的情况,可以直接执行
mongo db_host:db_port/db_name --eval "db.test_table.find({xxx = yyy})" > result.log
-
本地没有安装mongo,但是有mongo容器,可以如下操作
-
先挂载一个共享目录到容器里面
-
docker-compose 配置
volumes: - 容器外目录:容器内目录
-
非 docker-compose 编排,直接创建容器
--mount type=bind,source=容器外目录,destination=容器内目录
-
-
执行
docker exec mongo mongo db_host:db_port/db_name --eval "db.test_table.find({xxx = yyy})" > 容器内目录/result.log
-
在容器外挂载目录中查看输出的文件即可
-
解决数据库查询显示条目问题(输入到文件同样受到限制,因为这只是把屏幕输出重定向到了文件)
docker exec mongo mongo db_host:db_port/db_name --eval "DBQuery.shellBatchSize=100; db.test_table.find({xxx = yyy})" > 容器内目录/result.log DBQuery.shellBatchSize=100 // 这个就是设置显示条目数量
-
场景三:shell 命令连接 mongo,导入 xxx.gz 数据库文件生成对应数据库
-
本地安装了 mongo 客户端的情况,可以直接执行
mongorestore --drop -h db_host:db_port --gzip --archive=xxx.gz
-
本地没有安装mongo,但是有mongo容器,可以如下操作
-
挂载目录同场景二的第一步,这里挂载目录是为了让容器能访问到要使用的数据库文件,挂载好之后把文件放到容器外的共享目录内
-
执行
docker exec mongo mongorestore --drop -h db_host:db_port --gzip --archive=容器内目录/xxx.gz
-