首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用bash脚本获取数据库名mongoDB

使用bash脚本获取数据库名mongoDB
EN

Stack Overflow用户
提问于 2022-07-14 04:59:10
回答 1查看 183关注 0票数 1

我想用bash自动化我的mongo备份过程。我的计划是获取mongo上的所有数据库名,并将其存储到一个名为“Databasename.txt”的文件中。然后,我想从该文件中转储具有for循环的数据库,并将备份保存到其他目录。

问题是:

  • 每次我连接芒果壳,它都会显示这样的信息
代码语言:javascript
复制
MongoDB shell version v5.0.9
connecting to: mongodb://127.0.0.1:27017/?authSource=admin&compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("some-random-string") }
MongoDB server version: 5.0.9
================
Warning: the "mongo" shell has been superseded by "mongosh",
which delivers improved usability and compatibility.The "mongo" shell has been deprecated and will be removed in
an upcoming release.
For installation instructions, see
https://docs.mongodb.com/mongodb-shell/install/
================
admin      0.000GB
config     0.000GB
local      0.000GB
database1  0.000GB
database2  0.000GB
bye

我不需要这些信息,只想保存我的数据库名。我已经寻找了所有的可能性,但仍然没有完成。我该怎么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-14 06:36:51

试试mongo --quiet

但是,它仍然打印弃用警告。将它与--eval结合使用,但是命令show dbs是不可能的。

代码语言:javascript
复制
mongo --quiet --eval 'show dbs'

uncaught exception: SyntaxError: unexpected token: identifier :
@(shell eval):1:5
exiting with code -4

所以,最后的解决方案是Mongo.getDBNames()listDatabases

代码语言:javascript
复制
mongo --quiet --eval "db.adminCommand( { listDatabases: 1 } ).databases.map(x => x.name).join('\n')" > database-name.txt

mongo --quiet --eval "db.getMongo().getDBNames().join('\n')" > database-name.txt

应该返回的文件

代码语言:javascript
复制
admin 
config 
local 
database1 
database2
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72975409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档