Mongo命令未在批处理脚本中执行

时间:2020-04-01 08:06:48

标签: mongodb batch-file automation

我正在尝试执行批处理脚本以创建集合并将数据插入其中。它正在打开Mongo.exe,但未执行命令。

我尝试了以下方法。

cd  C:\Program Files\MongoDB\Server\3.2\bin
mongo.exe
mongo.exe --eval "use MyDatabase"
mongo.exe --eval  "db.TestCollection.insert({_id: 'Test1' , seq : 1})"
mongo.exe --eval  "db.TestCollection.insert({_id: 'Test2' , seq : 2})"
pause

上面的脚本打开Mongo.exe,除了执行其他操作外。我需要帮助,因为我想在与mongodb的一个连接中运行每个命令。 所以我尝试了:

mongo.exe mydb D:\TFX\Delta\a.js

其中a.js包含:

print(db)
db.TestCollection.insert({_id: 'Test1' , seq : 1})
db.TestCollection.insert({_id: 'Test2' , seq : 2})
print(show collections)
print(db)

但是在此之后,这表明找不到文件D:\ TFX \ Delta \ a.js的路径(文件路径正确)。

2 个答案:

答案 0 :(得分:0)

在运行多个对mongo.exe连接的调用时,它们是不同的。您应该在每次调用时提供数据库名称。您可以使用EOF语法或在命令中直接将其作为参数:

mongo.exe MyDatabase --eval "db.TestCollection.insert({_id: 'Test1' , seq : 1})"

编辑:

如果通过JS脚本文件运行它,则可以运行以下命令:

mongo.exe commands.js

使用这样的commands.js文件:

db = db.getSiblingDB('MyDatabase')
db.TestCollection.insert({_id: 'Test1' , seq : 1})
db.TestCollection.insert({_id: 'Test2' , seq : 2})

答案 1 :(得分:0)

我为此找到了解决方案:(程序根据azure devops管道)

FOR %%a IN (1 2 3 4 5 6 7 8 9) DO (
IF EXIST B:\agent\_work\%%a\Delta\script.txt (
cd /D C:\Program Files\MongoDB\Server\4.2\bin
mongo --username abcd --password abcd --authenticationDatabase mydb mydb < B:\agent\_work\%%a\Delta\script.txt
goto break
)
)
:break
exit

其中script.txt包含要在mongodb上运行的命令。