将变量从命令行传递给mongo命令

时间:2016-05-27 06:15:31

标签: c# mongodb batch-file

我有一个脚本:

mongo localhost:27017/MyDB --eval "db = connect("localhost:27017/SomeDB")"
mongo localhost:27017/MyDB --eval "db.copyDatabase(var1frombatch, var2frombatch)"
PAUSE

其中var1frombatch& var2frombatch从c#.net代码传递给这个批处理为%1,%2,我的问题是如何在我的--eval doe中使用变量?

我试过

mongo localhost:27017/MyDB --eval "db = connect("localhost:27017/SomeDB")"
mongo localhost:27017/MyDB --eval "db.copyDatabase('%1', '%2')"
PAUSE

但没有效果

1 个答案:

答案 0 :(得分:1)

MongoDB具有在命令行上运行shell脚本的功能。 在您的情况下,一个用于多个操作的javascript比评估多个mongodb函数更好。

运行如下脚本:

%MONGODBDIR%mongo localhost:27017/SMSManagement --eval "var dbA = '%1', dbB = '%2'" %SCRIPTSDIR%\shellscript.js

在你的shellscript.js

print("Copying database from " + "database:" + dbA + " to " + "database:" + dbB);

var result = db.copyDatabase(dbA, dbB)
printjson(result);

结果将输出如下:

{ "ok" : 1 }

有关此内容的更多信息,请参阅此处:https://docs.mongodb.com/manual/tutorial/write-scripts-for-the-mongo-shell/