Я использую файлы mongo и script следующим образом:
$ mongo getSimilar.js
Я хотел бы передать аргумент файлу:
$ mongo getSimilar.js apples
И затем в файле script выберите переданный аргумент.
var arg = $1;
print(arg);
Я использую файлы mongo и script следующим образом:
$ mongo getSimilar.js
Я хотел бы передать аргумент файлу:
$ mongo getSimilar.js apples
И затем в файле script выберите переданный аргумент.
var arg = $1;
print(arg);
Используйте --eval
и используйте сценарии оболочки, чтобы изменить переданную команду.
mongo --eval "print('apples');"
Или сделать глобальные переменные (кредит Tad Marshall):
$ cat addthem.js
printjson( param1 + param2 );
$ ./mongo --nodb --quiet --eval "var param1=7, param2=8" addthem.js
15
Вы не можете этого сделать, но вы можете поместить их в другой script и загрузить сначала:
// vars.js
msg = "apples";
и getSimilar.js:
print(msg);
Тогда:
$ mongo vars.js getSimilar.js
MongoDB shell version: blah
connecting to: test
loading file: vars.js
loading file: getSimilar.js
apples
Не совсем удобно.
Я использовал оболочку script для соединения команды mongo с mongo. В команде mongo я использовал arg, который я передал в оболочку script (т.е. Использовал $1
):
#!/bin/sh
objId=$1
EVAL="db.account.find({\"_id\" : \"$objId\"})"
echo $EVAL | mongo localhost:27718/balance_mgmt --quiet
Задайте оболочку var:
password='bladiebla'
Создать js script:
cat <<EOT > mongo-create-user.js
print('drop user admin');
db.dropUser('admin');
db.createUser({
user: 'admin',
pwd: '${password}',
roles: [ 'readWrite']
});
EOT
Передать script в mongo:
mongo mongo-create-user.js
Я написал небольшую утилиту для решения проблемы для себя. С помощью утилиты mongoexec
вы можете запустить команду ./getSimilar.js apples
, добавив следующее к началу вашего script:
#!/usr/bin/mongoexec --quiet
Внутри script вы можете получить доступ к аргументам как args[0]
.