我試圖在我的控制臺上查看 executionStats 但我總是得到undefinedor [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 })
}
uj5u.com熱心網友回復:
您需要更改將解釋物件記錄到控制臺的方式。
conn.collection('galery').find({ "user_id": req.session.userId}).explain("executionStats", (err, explain) => {
console.log('MongoDebug: ' explain[0]);
});
通過使用,您在將其附加到字串時'MongoDebug: ' explain[0]隱式呼叫,因此它必須是字串。對于物件,這會將它們轉換為..toString()explain[0][object, Object]
相反,您可以將其作為單獨的物件傳遞給您的 console.log:
console.log('MongoDebug: ', explain);
或者將其轉換為帶有額外間距的 JSON 以獲得更好的可讀性:
console.log(JSON.stringify(explain, null, 2));
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/424018.html
