Команды Mon go не выполняются в Batch Script - PullRequest
0 голосов
/ 01 апреля 2020

Я пытаюсь выполнить пакетный скрипт, чтобы создать коллекцию и вставить в нее данные. Он открывает Mon go .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

Приведенный выше скрипт открывает Mon go .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 голосов
/ 03 апреля 2020

Я получил решение для этого: (программа соответствует 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.

0 голосов
/ 01 апреля 2020

Поскольку вы выполняете несколько вызовов на 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})
...