Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript MongoDB脚本执行存储在变量中的查询_Javascript_Mongodb_Mongodb Shell - Fatal编程技术网

Javascript 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

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.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" )
 }