Run javascript script (.js file) in mongodb including another file inside js

Mongodb

Mongodb Problem Overview


I want to write a long script for inserting and updating mongodb data.

  1. Is it possible to call external js file that contains the script?
  2. Is it possible to include another js file from the running js file?

Mongodb Solutions


Solution 1 - Mongodb

Use Load function

load(filename)

You can directly call any .js file from the mongo shell, and mongo will execute the JavaScript.

Example : mongo localhost:27017/mydb myfile.js

This executes the myfile.js script in mongo shell connecting to mydb database with port 27017 in localhost.

For loading external js you can write

load("/data/db/scripts/myloadjs.js")

Suppose we have two js file myFileOne.js and myFileTwo.js

myFileOne.js

print('From file 1');
load('myFileTwo.js');     // Load other js file .

myFileTwo.js

print('From file 2');

MongoShell

>mongo myFileOne.js

Output

From file 1
From file 2

Solution 2 - Mongodb

Another way is to pass the file into mongo in your terminal prompt.

$ mongo < myjstest.js

This will start a mongo session, run the file, then exit. Not sure about calling a 2nd file from the 1st however. I haven't tried it.

Solution 3 - Mongodb

Yes you can. The default location for script files is data/db

If you put any script there you can call it as

load("myjstest.js")      // or 
load("/data/db/myjstest.js")

Solution 4 - Mongodb

for running mutilple js files

#!/bin/bash
cd /root/migrate/

ls -1 *.js | sed 's/.js$//' | while read name; do
     start=`date +%s`
     mongo localhost:27017/wbars $name.js;
     end=`date +%s`
     runtime1=$((end-start))
     runtime=$(printf '%dh:%dm:%ds\n' $(($runtime1/3600)) $(($secs%3600/60)) $(($secs%60)))
     echo @@@@@@@@@@@@@ $runtime $name.js completed @@@@@@@@@@@
     echo "$name.js completed"
     sync
     echo 1 > /proc/sys/vm/drop_caches
     echo 2 > /proc/sys/vm/drop_caches
     echo 3 > /proc/sys/vm/drop_caches
done
    

Solution 5 - Mongodb

To call external file you can use :

> load ("path\file")

Exemple: if your file.js file is on your "Documents" file (on windows OS), you can type:

> load ("C:\users\user_name\Documents\file.js")

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSexyMFView Question on Stackoverflow
Solution 1 - MongodbSumeet Kumar YadavView Answer on Stackoverflow
Solution 2 - MongodbYeeHaw1234View Answer on Stackoverflow
Solution 3 - MongodbToumiView Answer on Stackoverflow
Solution 4 - Mongodbraja ganapathyView Answer on Stackoverflow
Solution 5 - MongodbubèrView Answer on Stackoverflow