5 ответов:
использовать
--evalи используйте сценарии оболочки для изменения переданной команды.
mongo --eval "print('apples');"или сделать глобальные переменные (кредит Тэд Маршалл):
$ cat addthem.js printjson( param1 + param2 ); $ ./mongo --nodb --quiet --eval "var param1=7, param2=8" addthem.js 15
вы не можете этого сделать, но вы можете поместить их в другой скрипт и загрузить его первым:
// 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не совсем так удобно, хотя.
установите оболочку var:
password='bladiebla'создать JS скрипт:
cat <<EOT > mongo-create-user.js print('drop user admin'); db.dropUser('admin'); db.createUser({ user: 'admin', pwd: '${password}', roles: [ 'readWrite'] }); EOTпередать скрипт монго:
mongo mongo-create-user.js
я использовал сценарий оболочки для передачи команды mongo в mongo. В команде mongo я использовал arg, который я передал скрипту оболочки (т. е. я использовал
):#!/bin/sh objId= EVAL="db.account.find({\"_id\" : \"$objId\"})" echo $EVAL | mongo localhost:27718/balance_mgmt --quiet
Я написал небольшую утилиту, чтобы решить эту проблему для себя. С помощью
mongoexecутилита, вы сможете запустить команду./getSimilar.js applesдобавив следующее В начало вашего скрипта:#!/usr/bin/mongoexec --quietв скрипте вы можете получить доступ к аргументам как
args[0].
Comments