Я читал о ReDOS.
https://en.wikipedia.org/wiki/ReDoS
Кажется, если вы запустите этот код в Node.js:
console.time('aaa');
/^(a+)+$/.test('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!')
console.timeEnd('aaa');
для запуска требуется около 7821 мс.
Но если я добавлю то же значение в MongoDB:
db.users.insert({name: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!"});
db.users.findOne({name: { '$regex': '^(a+)+$'}});
Это оценивается немедленно и возвращает ноль.
Есть идеи, как MongoDB может так быстро это оценить?