下面两段代码,第一段只有部分记录能更新成功,第二段代码正常。有大佬知道啥原因吗?
await Promise.all(
tuples.map(async ([list, count]) => {
// await this.listModel.findOne({ _id: list }); // 存在这行也正常,不存在的话就不正常。
await this.listModel.updateOne(
{ _id: list },
{
$inc: {
sampleCount: -count,
},
},
{ session },
);
}),
);
for (const [list, count] of tuples) {
await this.listModel.updateOne(
{ _id: list },
{
$inc: {
sampleCount: -count,
},
},
{ session },
);
}
我排查了下,updateOne 方法都能返回修改成功一行数据,所以更新是成功的,但是最后事务执行完毕后只查到部分数据有正常更新。
MongoDB 4.4 。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.