Isso funcionou para mim:
mongo --eval "var my_var = '$MY_VAR'" my_script.js
Deixe de fora o
<
. mongo
irá processar quaisquer argumentos restantes na linha de comando como arquivos a serem executados/interpretados, mas aparentemente combinando o redirecionamento de entrada do shell com --eval
faz com que o namespace javascript seja redefinido. Suponho, mas não posso confirmar, que isso ocorre porque os nomes de arquivos passados como argumentos são processados por meio do
load()
mecanismo, que de acordo com https://docs.mongodb.com/v3 .2/reference/method/load/
, se comporta da seguinte forma: