Javascript MongoDB脚本执行存储在变量中的查询
My.js脚本读取包含mongodb查询的文件,并将其填充到数组中。然后我读取该数组并执行查询,但它们没有被执行。下面是我的代码Javascript MongoDB脚本执行存储在变量中的查询,javascript,mongodb,mongodb-shell,Javascript,Mongodb,Mongodb Shell,My.js脚本读取包含mongodb查询的文件,并将其填充到数组中。然后我读取该数组并执行查询,但它们没有被执行。下面是我的代码 1. //After successfuly connecting to mongodb 2. //read a file containing queries 3. var queryFile = cat("queries.txt"); 4. var queries = queryFile.split("\r\n"); 5. var length = queries
1. //After successfuly connecting to mongodb
2. //read a file containing queries
3. var queryFile = cat("queries.txt");
4. var queries = queryFile.split("\r\n");
5. var length = queries.length;
6. for(var i = 0; i < length; i++){
7. var start = new Date().getTime()
8. queries[i]
9. var end = new Date().getTime();
10. var timeElapsed = (end - start)/1000;
11. print ( "Time taken to run query : "+timeElapsed+" secs" )
12. }
1//成功连接到mongodb后
2. //读取包含查询的文件
3.var queryFile=cat(“querys.txt”);
4.var querys=queryFile.split(“\r\n”);
5.var length=querys.length;
6.对于(变量i=0;i
仅当我将第12行替换为实际查询(例如db.coll.count())时,它才起作用。
查询[I]
只是一个字符串。这是一个严格的指令。我的猜测是使用eval(查询[i])
对其进行评估
for(变量i=0;i
然而,人们经常这样说,而且只能在最后的手段中使用。
查询[i]
只是一个字符串。我的猜测是用eval(查询[i])
计算该字符串。即使是“eval是邪恶的”之类的。好吧,这确实是个骗局,但为什么eval是邪恶的。哦,这是一个古老的争论。基本上,eval
通过运行传递给它的任何内容,允许代码注入。看,很好,你能起草一份答案吗?然后我会接受。好主意:)这么做了。
for(var i = 0; i < length; i++){
var start = new Date().getTime()
eval(queries[i]);
var end = new Date().getTime();
var timeElapsed = (end - start)/1000;
print ( "Time taken to run query : "+timeElapsed+" secs" )
}