From 204e0bbf409a0e56179bcc6ec811395bcb50579a Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Tue, 17 Sep 2024 09:16:00 +0800 Subject: [PATCH 1/2] Add indices to DB --- Server/db/mongo/modules/checkModule.js | 5 ++--- Server/models/Check.js | 5 +++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Server/db/mongo/modules/checkModule.js b/Server/db/mongo/modules/checkModule.js index 4bc405835..d057a4158 100644 --- a/Server/db/mongo/modules/checkModule.js +++ b/Server/db/mongo/modules/checkModule.js @@ -149,13 +149,12 @@ const getTeamChecks = async (req) => { let { sortOrder, limit, dateRange, filter, page, rowsPerPage } = req.query; // Get monitorIDs - const userMonitors = await Monitor.find({ teamId: teamId }); + const userMonitors = await Monitor.find({ teamId: teamId }).select("_id"); const monitorIds = userMonitors.map((monitor) => monitor._id); //Build check query // Default limit to 0 if not provided - limit = limit === "undefined" ? 0 : limit; - + limit = limit === undefined ? 0 : limit; // Default sort order is newest -> oldest sortOrder = sortOrder === "asc" ? 1 : -1; diff --git a/Server/models/Check.js b/Server/models/Check.js index 55bb2d988..acb20dfb9 100644 --- a/Server/models/Check.js +++ b/Server/models/Check.js @@ -19,6 +19,7 @@ const CheckSchema = mongoose.Schema( type: mongoose.Schema.Types.ObjectId, ref: "Monitor", immutable: true, + index: true, }, /** * Status of the check (true for up, false for down). @@ -27,6 +28,7 @@ const CheckSchema = mongoose.Schema( */ status: { type: Boolean, + index: true, }, /** * Response time of the check in milliseconds. @@ -43,6 +45,7 @@ const CheckSchema = mongoose.Schema( */ statusCode: { type: Number, + index: true, }, /** * Message or description of the check result. @@ -69,4 +72,6 @@ const CheckSchema = mongoose.Schema( } ); +CheckSchema.index({ createdAt: 1 }); + module.exports = mongoose.model("Check", CheckSchema); From b0942fdcaba815d4cfc09ed608754aa2f10961aa Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Tue, 17 Sep 2024 09:37:24 +0800 Subject: [PATCH 2/2] optimizations --- Server/db/mongo/modules/checkModule.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Server/db/mongo/modules/checkModule.js b/Server/db/mongo/modules/checkModule.js index d057a4158..6ab1fd51b 100644 --- a/Server/db/mongo/modules/checkModule.js +++ b/Server/db/mongo/modules/checkModule.js @@ -150,7 +150,6 @@ const getTeamChecks = async (req) => { // Get monitorIDs const userMonitors = await Monitor.find({ teamId: teamId }).select("_id"); - const monitorIds = userMonitors.map((monitor) => monitor._id); //Build check query // Default limit to 0 if not provided @@ -158,7 +157,7 @@ const getTeamChecks = async (req) => { // Default sort order is newest -> oldest sortOrder = sortOrder === "asc" ? 1 : -1; - checksQuery = { monitorId: { $in: monitorIds } }; + checksQuery = { monitorId: { $in: userMonitors } }; if (filter !== undefined) { checksQuery.status = false; @@ -191,8 +190,8 @@ const getTeamChecks = async (req) => { const checks = await Check.find(checksQuery) .skip(skip) .limit(rowsPerPage) - .sort({ createdAt: sortOrder }); - + .sort({ createdAt: sortOrder }) + .select(["monitorId", "status", "responseTime", "statusCode", "message"]); return { checksCount, checks }; };