то, что я пытаюсь сделать, - это l oop через большую коллекцию документов очень быстро, что я хочу здесь, это эффективность времени, поэтому у меня есть файл, который имеет около 30 миллионов строк, а набор электронных писем может составлять 500k или 1M max, я хочу проверить, существует ли это электронное письмо в этом файле, а затем обновить массив в этом документе, думая об этом в течение нескольких дней, не находя ничего полезного: это мой код, но он занимает много времени, например, 20 минут или более, я хотите ускорить это, чтобы сделать это как можно быстрее, может быть, 2 минуты или меньше, черт, я работаю с курсорами в mongodb;
for await(const email of MailBox.find({})) {
const child = shell.exec(`LC_ALL=C fgrep -m 1 -w ${email.box} file.txt`);
if(child.stdout.replace('\n','') === email.box){
email.supp.push(1)
await email.save()
}
}
может кто-нибудь дать мне совет, пожалуйста
EDIT : после того, как я получил некоторые советы из комментариев, это мой новый код, но он все еще занимает так много времени, с 200k документов и файлом с 10M строками, с помощью обратного вызова он стал быстрее, но не так, как хотелось
for await(const email of MailBox.find({}).select('box supp')) {
shell.exec(`LC_ALL=C fgrep -m 1 -w ${email.box} file.txt`, async function(code, stdout, stderr) {
if(stdout.replace('\n','') === email.box){
mail.supp.push(offer)
await email.save()
}
});
}