对于你想要实现的目标,你需要使用一个 QueryCursor 这将允许您逐个修改文档。
你可以这样做,
Card.find() .cursor() .on('data', function(card) { if (card.date === firstDate) { card.set("date", secondDate); } else if (card.date === secondDate) { card.set("date", firstDate); } card.save(function(err){ }); }) .on('end', function() { console.log('Done!'); });
你需要确保内部的匿名功能 forEach 支持承诺,这可以通过 async 关键词。
forEach
async
试试这个:
cards.forEach(async (card) => { return card.updateOne( ...
此外, findAndModify() 可能是一个更好的工具,所以你可以避免迭代整个集合 Card 每个请求上的对象,并卸载到 query 数据库调用的参数。
findAndModify()
Card
query