Запустите javascript script (.js файл) в mongodb, включая другой файл внутри js Я хочу написать длинный script для вставки и обновления данных mongodb. Можно ли вызвать внешний файл js, содержащий script? Можно ли включить другой js файл из запущенного js файла? Ответ 1 Используйте функцию загрузки load(filename) Вы можете напрямую вызвать любой файл .js из оболочки mongo, и mongo выполнит JavaScript. Пример: mongo localhost:27017/mydb myfile.js Это выполняет сценарий myfile.js в оболочке mongo, подключающийся к базе данных mydb с портом 2701 в localhost. Для загрузки внешних JS вы можете написать load("/data/db/scripts/myloadjs.js") Предположим, у нас есть два файла js myFileOne.js и 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 Выход From file 1 From file 2 Ответ 2 Да, вы можете. По умолчанию для файлов script установлено значение data/db Если вы поместите любой script, вы можете называть его load("myjstest.js") // or load("/data/db/myjstest.js") Ответ 3 Другой способ - передать файл в mongo в командной строке терминала. $ mongo < myjstest.js Это запустит сеанс монго, запустит файл и выйдет. Однако не уверен насчет вызова второго файла из первого. Я не пробовал это. Ответ 4 для запуска файлов mutilple 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
Ответ 1 Используйте функцию загрузки load(filename) Вы можете напрямую вызвать любой файл .js из оболочки mongo, и mongo выполнит JavaScript. Пример: mongo localhost:27017/mydb myfile.js Это выполняет сценарий myfile.js в оболочке mongo, подключающийся к базе данных mydb с портом 2701 в localhost. Для загрузки внешних JS вы можете написать load("/data/db/scripts/myloadjs.js") Предположим, у нас есть два файла js myFileOne.js и 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 Выход From file 1 From file 2
Ответ 2 Да, вы можете. По умолчанию для файлов script установлено значение data/db Если вы поместите любой script, вы можете называть его load("myjstest.js") // or load("/data/db/myjstest.js")
Ответ 3 Другой способ - передать файл в mongo в командной строке терминала. $ mongo < myjstest.js Это запустит сеанс монго, запустит файл и выйдет. Однако не уверен насчет вызова второго файла из первого. Я не пробовал это.
Ответ 4 для запуска файлов mutilple 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