Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to pass environment variable to mongo script

Tags:

shell

mongodb

I want to pass the environment variable named file_path to js file.

I am using the following syntax:

mongo --eval "var file_path='$file_path'" < aggregation.js

Output:

MongoDB shell version: 3.2.9-rc0
connecting to: test

Note:

It does not execute aggregation.js file. only it pass the argument.

like image 350
Shubham Pardeshi Avatar asked Sep 12 '16 06:09

Shubham Pardeshi


People also ask

What is MongoDB Mongosh?

The MongoDB Shell, mongosh , is a fully functional JavaScript and Node. js 16. x REPL environment for interacting with MongoDB deployments. You can use the MongoDB Shell to test queries and operations directly with your database. mongosh is available as a standalone package in the MongoDB Download Center.

What is the use of .ENV file?

The . env file contains the individual user environment variables that override the variables set in the /etc/environment file. You can customize your environment variables as desired by modifying your . env file.


1 Answers

This worked for me:

mongo --eval "var my_var = '$MY_VAR'" my_script.js

Leave out the <. mongo will process any remaining arguments on the command line as files to be executed/interpreted, but apparently combining the shell input redirect with --eval causes the javascript namespace to be reset.

I assume but cannot confirm that this is because filenames passed as arguments are processed via the load() mechanism, which according to https://docs.mongodb.com/v3.2/reference/method/load/, behaves as follows:

After executing a file with load(), you may reference any functions or variables defined the file from the mongo shell environment.

like image 150
Karen B Avatar answered Sep 22 '22 13:09

Karen B