MongoDB 脚本执行存储在变量中的查询
MongoDB script execute queries stored in variable
我的 .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. }
只有当我用实际查询替换第 12 行时才有效,例如db.coll.count()
queries[i]
只是一个字符串。这是一个字符串化的指令。我的猜测是用 eval(queries[i])
.
来评估它
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" )
}
然而,人们常说 eval is evil 并且只能在万不得已的情况下使用。
我的 .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. }
只有当我用实际查询替换第 12 行时才有效,例如db.coll.count()
queries[i]
只是一个字符串。这是一个字符串化的指令。我的猜测是用 eval(queries[i])
.
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" )
}
然而,人们常说 eval is evil 并且只能在万不得已的情况下使用。