我想编写一个用于插入和更新mongodb数据的长脚本。
答案 0 :(得分:88)
load(filename)
您可以直接从mongo shell调用任何 .js 文件,mongo将执行JavaScript。
示例:mongo localhost:27017/mydb myfile.js
这将在mongo shell中执行myfile.js脚本,该脚本使用端口2701连接到mydb数据库 在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
答案 1 :(得分:5)
是的,你可以。 脚本文件的默认位置是data / db
如果您在其中放置任何脚本,则可以将其称为
load("myjstest.js") // or
load("/data/db/myjstest.js")
答案 2 :(得分:2)
另一种方法是在终端提示符下将文件传递到mongo。
$ mongo < myjstest.js
这将启动mongo会话,运行文件,然后退出。 但是不确定从第一个调用第二个文件。我还没有尝试过。
答案 3 :(得分:0)
用于运行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
答案 4 :(得分:0)
要调用外部文件,您可以使用:
加载(“路径\文件”)
示例:如果您的file.js文件位于“文档”文件中(在Windows操作系统上),则可以输入:
加载(“ C:\ users \用户名\ Documents \ file.js”)