MongoDB从文件执行查询并测量时间



我有一个包含mongoDB查询的txt文件,如下所示:

db.telephone.find({'brand' : 'Apple'});
db.telephone.find({'brand' : 'Samsung'});

。总共约 1500 行。我正在像这样执行此查询。

mongo myDatabase C:pathmongoDB.txt

现在,我需要测量执行所有这些查询所需的时间。我真的不在乎输出,我真的只关心它所花费的时间(作为实验的一部分(。

我认为如果我创建一个集合times并在查询文件的开头和结尾像这样db.times.insert({time: Date()});插入当前时间,它会做我需要的,但它似乎不起作用,因为这两个结果时间最终是相同的(我相信执行所有这些查询确实需要超过 1 秒的时间(。

这是因为我不打印输出,所以查询并没有真正执行吗?或者为什么这不起作用?有没有更好的方法来测量从文件执行这些查询所需的时间?谢谢。

您可以在文件本身中分配开始和结束时间。下面是一个示例:

var start_time = new Date().valueOf();
db.telephone.find({'brand' : 'Apple'});
db.telephone.find({'brand' : 'Samsung'});
var end_time = new Date().valueOf();
print(end_time-start_time);

我们如何精确测量执行时间?

为了分析查询,我们可以使用 explain((。它返回查询的完整统计信息。下面是一个示例:

db.telephone.find({'brand' : 'Apple'}).explain("executionStats")

输出:

{
"queryPlanner" : {
"plannerVersion" : 1,
"namespace" : "check.telephone",
"indexFilterSet" : false,
"parsedQuery" : {
"brand" : {
"$eq" : "Apple"
}
},
"winningPlan" : {
"stage" : "COLLSCAN",
"filter" : {
"brand" : {
"$eq" : "Apple"
}
},
"direction" : "forward"
},
"rejectedPlans" : [ ]
},
"executionStats" : {
"executionSuccess" : true,
"nReturned" : 1,
"executionTimeMillis" : 35,
"totalKeysExamined" : 0,
"totalDocsExamined" : 1,
"executionStages" : {
"stage" : "COLLSCAN",
"filter" : {
"brand" : {
"$eq" : "Apple"
}
},
"nReturned" : 1,
"executionTimeMillisEstimate" : 0,
"works" : 3,
"advanced" : 1,
"needTime" : 1,
"needYield" : 0,
"saveState" : 0,
"restoreState" : 0,
"isEOF" : 1,
"invalidates" : 0,
"direction" : "forward",
"docsExamined" : 1
}
},
"serverInfo" : {
"host" : "theMechanic",
"port" : 27017,
"version" : "4.0.11",
"gitVersion" : "417d1a712e9f040d54beca8e4943edce218e9a8c"
},
"ok" : 1
}

注意:executionStats.executionTimeMillis保存实际查询执行时间。

最新更新