下面两段代码,第一段只有部分记录能更新成功,第二段代码正常。有大佬知道啥原因吗?
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 。
1
IvanLi127 OP |
2
clf 2021-12-02 18:13:20 +08:00
MongoDB 事务唯一比较蛋疼的就是 Save/Insert 不能自动建集合了( SpringBoot 的 MongoTemplate ),所以现在会手动在跑项目的时候扫描一遍代码检查是否已经建了集合,没有的话就自动初始化集合。
|