Esto funcionó para mí:
mongo --eval "var my_var = '$MY_VAR'" my_script.js
Omita el <
. mongo
procesará los argumentos restantes en la línea de comando como archivos para ser ejecutados/interpretados, pero aparentemente combinando la redirección de entrada de shell con --eval
hace que se restablezca el espacio de nombres de javascript.
Supongo, pero no puedo confirmar, que esto se debe a que los nombres de archivo pasados como argumentos se procesan a través de load()
mecanismo, que según https://docs.mongodb.com/v3 .2/referencia/método/carga/
, se comporta de la siguiente manera: