我想检查每种干预措施在两个日期之间的重复情况。 我们有一个数据库(MongoDB),其中包含一些与计划API相关的信息。该计划可确保家庭护理助理有自己的计划。
但是今天我们有一些重复的干预措施。
我正在从此使用帆和水线。
我找到了从开始日期到结束日期的所有干预措施,并检查每个干预措施是否在同一日期与同一家庭护理助手相关。 (检查重复项)
我是这样做的:
let conditionInter = {advPk: advPk, agency: agency, start: {">=": start}, end: {"<=": end}, eventType: 1}
if(advPk == undefined) delete conditionInter.advPk;
if(agency == undefined) delete conditionInter.agency;
if(start == undefined || end == undefined) return res.send("Il manque la date de début et/ou la date de fin.");
let interventions = await Intervention.find(conditionInter);
let nbr = interventions.length;
process.stdout.write(`Detecting duplicates on ${interventions.length} interventions `);
for(intervention of interventions) {
process.stdout.write(`\r${nbr} interventions to check `);
nbr --;
if(advPk == undefined) advPk = intervention.advPk;
let startIntervention = intervention.start;
let endIntervention = intervention.end;
let condition = {
advPk: advPk,
eventType: 1,
or: [{
and: [{
start: {">=": startIntervention}
}, {
start: {"<": endIntervention}
}]
},{
and: [{
end: {">": startIntervention}
}, {
end: {"<=": endIntervention}
}]
}]
}
let interventionsDuplicate = await Intervention.find(condition);
if(interventionsDuplicate.length > 1) {
// LOGS...
}
}
它可以工作,但是确实很慢,大约一个秒一次地检查每个干预。我不是Aggregation等的专业人士。所以我想知道如何正确地检查重复项。谢谢