web-dev-qa-db-fra.com

Exécuter un script javascript (fichier .js) dans mongodb incluant un autre fichier dans js

Je veux écrire un long script pour insérer et mettre à jour des données mongodb. 

  1. Est-il possible d'appeler un fichier JS externe contenant le script? 
  2. Est-il possible d'inclure un autre fichier js à partir du fichier js en cours d'exécution? 
39
Shazam

Utiliser Charger la fonction 

load(filename)

Vous pouvez appeler directement n'importe quel fichier .js à partir du shell mongo, qui exécutera JavaScript.

Exemple: mongo localhost:27017/mydb myfile.js

Cela exécute le script myfile.js dans le shell mongo se connectant à la base de données mydb avec le port 2701in localhost.

Pour charger des js externes, vous pouvez écrire 

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

Supposons que nous ayons deux fichiers js, myFileOne.js et 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

Sortie

From file 1
From file 2
83
Sumeet

Oui, vous pouvez . L'emplacement par défaut des fichiers de script est data/db.

Si vous mettez un script là-bas, vous pouvez l'appeler comme 

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

Une autre méthode consiste à transmettre le fichier à mongo dans l'invite de votre terminal.

$ mongo < myjstest.js

Cela démarrera une session mongo, exécutera le fichier, puis quittera . Je n'ai pas essayé.

1
YeeHaw1234

pour exécuter plusieurs fichiers js

#!/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
0
raja ganapathy