gpt4 book ai didi

javascript - 如何防止 "MongoError: Transaction 1 has been committed."?

转载 作者:行者123 更新时间:2023-12-02 23:02:41 30 4
gpt4 key购买 nike

问题

使用 MongoDB 4.2,我尝试执行 50,000 个事务(50,000 个数组突变)。好像 90% 是成功的,但对于其余的我得到:

MongoError: Transaction 1 has been committed.

不幸的是,我什至不明白错误消息!

方法

一位 Reddit 用户建议升级到 4.2 以克服 16 MB oplog 限制。但这并没有帮助。

代码

我认为这并不重要,但为了我的 Node.js 代码的完整性:

const rowCollection = client.db('docemur').collection('row')
session.startTransaction()

// Reorder rows according to columns
await rowCollection
.find({ table: table._id }, { session })
.forEach(async row => {
// Reorder the row array
row.row = sortBy(row.row, unsorted => {
return findIndex(columns, sorted => unsorted.column === sorted.identifier)
})

// Update the now ordered row
await rowCollection
.updateOne(
{ _id: row._id },
{ $set: { row: row.row } },
{ session }
)
})

await session.commitTransaction()
session.endSession()

最佳答案

您需要使用bulkWrite更新这么多文档时。

关于javascript - 如何防止 "MongoError: Transaction 1 has been committed."?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57724114/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com