首页 > 解决方案 > 使用 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

问候, 瓦尔

标签: mongodbshellmongo-shell

解决方案


上面的脚本启动了两个 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

或类似的。


推荐阅读