如何将参数传递给Mongo Script

Bri*_*rig 62 javascript scripting mongodb

我一直在使用像这样的mongo和脚本文件:

$ mongo getSimilar.js
Run Code Online (Sandbox Code Playgroud)

我想将一个参数传递给该文件:

$ mongo getSimilar.js apples
Run Code Online (Sandbox Code Playgroud)

然后在脚本文件中拾取传入的参数.

var arg  = $1;
print(arg);
Run Code Online (Sandbox Code Playgroud)

jco*_*lum 103

使用--eval和使用shell脚本来修改传入的命令.

mongo --eval "print('apples');"

或制作全局变量(归功于Tad Marshall):

$ cat addthem.js
printjson( param1 + param2 );
$ ./mongo --nodb --quiet --eval "var param1=7, param2=8" addthem.js
15
Run Code Online (Sandbox Code Playgroud)

  • --eval非常有用.假设我们希望快速更改辅助服务器以成为复制集中的主服务器.使用脚本`conf = rs.conf()conf.members.forEach(function(member){member.priority = 0.5})conf.members [memberId] .priority = 1 // rs.reconfig(conf)`save this selectprimary.js中的脚本并使用`mongo --eval"var memberId = 3"chooseprimary.js`运行.memberId应该是您希望成为主要辅助的辅助ID.只需确保在主服务器上执行mongo --eval.:) (4认同)

kri*_*ina 21

你不能这样做,但是你可以将它们放在另一个脚本中并首先加载它:

// vars.js
msg = "apples";
Run Code Online (Sandbox Code Playgroud)

和getSimilar.js是:

print(msg);
Run Code Online (Sandbox Code Playgroud)

然后:

$ mongo vars.js getSimilar.js
MongoDB shell version: blah
connecting to: test
loading file: vars.js
loading file: getSimilar.js
apples
Run Code Online (Sandbox Code Playgroud)

但不太方便.