在mongo shell中try..catch错误

时间:2019-06-06 14:17:50

标签: mongodb automation try-catch

我正在尝试自动执行mongodb设置并通过mongo shell中的js脚本创建用户。

我试图创建管理员用户,我想检查用户是否已经创建。如果我运行创建用户(如果该用户已经存在),则会引发错误。所以我想检查用户是否已经在那里

#init.js
use admin
try {
db.createUser({
"user":"admin",
"pwd":"paddowrd",
"roles":[{"role":"root", "db":"admin"}]
});
}
catch (err) {
print ("Admin user already created");
db.auth("admin","paddowrd");
}




mongo < init.js

输出:[错误]

2019-06-06T14:07:58.039 + 0000 E查询[js]语法错误:缺少捕获或尝试@(shell):2:0后终于

1 个答案:

答案 0 :(得分:0)

正确的命令是:

mongo --host localhost:27027 init.js

无需在此处重定向输入。 Mongo命令行接受javascript文件名作为参数。

还要摆脱脚本中的前两行,并使用db.getSiblingDB(“ admin”)来切换数据库。

//#init.js
//use admin
db.getSiblingDB("admin")
try {
db.createUser({
"user":"admin",
"pwd":"paddowrd",
"roles":[{"role":"root", "db":"admin"}]
});
}
catch (err) {
print ("Admin user already created");
db.auth("admin","paddowrd");
}