mongodb - 使用 shell 脚本创建多个 monogdb 数据库
问题描述
我正在尝试使用以下 shell 脚本创建多个 mongodb 数据库。其中 root 在 mongodb 实例级别具有 root 访问权限。db_names.txt 传递要创建的数据库名称。
cat dbcreate.sh
for DB in 'cat /home/db_names.txt'
do
echo "use $DB" | mongo -u root -p root --port 27017
echo "db.createCollection(\"testcollection\");" | mongo -u root -p root123 --port 27017
done
但它失败并出现以下错误:我不明白为什么 root 不能在用户数据库中创建集合?谁能帮忙?
MongoDB shell version v4.0.12
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("4e714db0-9faf-497c-ae4e-bbf913979bbd") }
MongoDB server version: 4.0.12
switched to db db1
bye
exception: connect failed
MongoDB shell version v4.0.12
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("ed678cc0-9f8b-4935-859b-b02e039c8d47") }
MongoDB server version: 4.0.12
switched to db db2
bye
问候, 瓦尔
解决方案
上面的脚本启动了两个 Mongo shell 客户端,每个都在 Mongo 命令上运行:
1) 使用 $DB
2) db.createCollection(\"testcollection\")
您可能希望将这两个命令发送到同一个 Mongo shell,以便 db.createCollection 将在使用提供的正确数据库中执行:
do
( echo "use $DB" | echo "db.createCollection(\"testcollection\");" ) |
mongo -u root -p root --port 27017
done
或类似的。
推荐阅读
- ruby-on-rails - 在 Active Record 中乘以列?
- java - 如何使用 fat-JAR 正确运行 Akka 应用程序?(未找到密钥“akka.remote.log-received-messages”的配置设置)
- ios - 如何在 Swift 中按顺序对一组图像视图进行动画处理?
- c# - 如何在 xaml 中创建可扩展(下拉)表?
- python - 即使从 ckpt 文件恢复后,Tensorflow 权重也没有恢复
- sqlite - 我可以观察基于变量查询的 LiveData 对象吗?
- php - 在codeigniter中通过ajax post提交表单数据时如何停止重定向到控制器页面
- python - 如何在 Django auth_views 中使用我自己的模板?
- javascript - 在laravel中将日期函数传递给javascript
- javascript - DarkSky 代理 - “请求未发送。错误:缺少经度或纬度。” - 节点 JS 请求 URL,不知道为什么不工作