Я использую AgendaJS для составления расписания, но иногда работа не выполняется и никогда не заканчивается.Я пытаюсь найти все jobs
, которые либо были заблокированы более 10 минут, либо никогда не заканчивались.Приведенный ниже запрос работает, но он сильно загружает мою базу данных mongo.Как я могу сделать этот запрос MongoDB / mongoose более эффективным?
const staleJobQuery = {
$or: [
{
$and: [
{lockedAt: {$ne: null}},
{
lockedAt: {
$lte: moment()
.subtract(10, "minutes")
.toDate()
}
}
]
},
// This checked to see if the lastRunAt is greater than lastFinishedAt (aka, never finished)
// AND that if it's not currently locked
{
$expr: {$and: ["$lastRunAt", {$gt: ["$lastRunAt", "$lastFinishedAt"]}]},
lockedAt: null
}
]
};
const jobs = await Job.find(staleJobQuery);