Подтвердить что ты не робот

Запустите javascript script (.js файл) в mongodb, включая другой файл внутри js

Я хочу написать длинный script для вставки и обновления данных mongodb.

  • Можно ли вызвать внешний файл js, содержащий script?
  • Можно ли включить другой js файл из запущенного js файла?
4b9b3361

Ответ 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