【发布时间】:2022-02-10 01:36:01
【问题描述】:
我试图在我的控制台上查看 executionStats,但我总是得到 undefined 或 [object, object]。我只是有一个简单的查询,我想在其中查看一些统计信息。有人可以解释为什么这不起作用吗?如果我只使用我的查询进行查询(而不使用explain()),则查询成功。
这是我在尝试将解释与所有其他代码一起使用时的查询。我想查看查询的性能,所以我发现获得性能时间的最佳方法是使用explain()。
const timeFunction2 = new Promise((resolve, reject) => {
var startTime = performance.now();
setTimeout(() => {
conn.collection('galery').find({ "user_id": req.session.userId}).explain("executionStats", (err, explain) => {
console.log('MongoDebug: ' + explain[0]);
});
var endTime = performance.now();
resolve(endTime - startTime);
});
});
timeFunction2.then(time => {
console.log(`${time} ms.`);
});
这是我的查询代码,我可以在其中成功获取数据并在我的页面上显示它们
const timeFunction2 = new Promise((resolve, reject) => {
var startTime = performance.now();
setTimeout(() => {
conn.collection('galery').find({ "user_id": req.session.userId}).toArray( (err, resultImg) =>{
.
.
.
});
var endTime = performance.now();
resolve(endTime - startTime);
});
});
timeFunction2.then(time => {
console.log(`${time} ms.`);
});
这是我的 MongoDB 调试输出:
MongoDebug: {
queryPlanner: {
plannerVersion: 1,
namespace: 'nodejsnosql.galerija',
indexFilterSet: false,
parsedQuery: { uporabnik_id: [Object] },
winningPlan: { stage: 'COLLSCAN', filter: [Object], direction: 'forward' },
rejectedPlans: []
},
executionStats: {
executionSuccess: true,
nReturned: 3,
executionTimeMillis: 0,
totalKeysExamined: 0,
totalDocsExamined: 5,
executionStages: {
stage: 'COLLSCAN',
filter: [Object],
nReturned: 3,
ok: 1,
'$clusterTime': {
clusterTime: new Timestamp({ t: 1644428067, i: 1 }),
signature: {
hash: new Binary(Buffer.from("71a216b111009bfcef6bd4923029d8df7a219e1a", "hex"), 0),
keyId: new Long("7027534341366349828")
}
},
operationTime: new Timestamp({ t: 1644428067, i: 1 })
}
【问题讨论】: