我正在尝试执行批处理脚本以创建集合并将数据插入其中。它正在打开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的路径(文件路径正确)。
答案 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上运行的命令。