'use strict'; //use simple string replacement and filter to remove dead quotes, instead of running the whole messagehandler again module.exports = (deletedPosts, updateQuotePosts) => { const bulkWrites = []; updateQuotePosts.forEach(post => { deletedPosts.forEach(ap => { const quotesBefore = post.quotes.length; post.quotes = post.quotes.filter(q => q.postId !== ap.postId); if (quotesBefore !== post.quotes.length) { //optimization, probably post.message = post.message.replace( `>>${ap.postId}`, `>>${ap.postId}` ); } }); bulkWrites.push({ 'updateOne': { 'filter': { '_id': post._id }, 'update': { '$set': { 'quotes': post.quotes, 'message': post.message, } } } }); }); return bulkWrites; };