Je veux écrire un long script pour insérer et mettre à jour des données mongodb.
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
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")
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é.
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