MongoDB是一个非关系型数据库,不支持传统的ACID事务。但是,MongoDB 4.0版本引入了多文档事务功能,允许在一个单个事务中执行多个操作,并保证这些操作要么全部成功,要么全部失败。
以下是一个示例,演示如何在MongoDB中执行事务:
const { MongoClient } = require('mongodb');
async function runTransaction() {
const client = new MongoClient('mongodb://localhost:27017', { useNewUrlParser: true, useUnifiedTopology: true });
try {
await client.connect();
const session = client.startSession();
session.startTransaction();
const collection = client.db('testdb').collection('testCollection');
await collection.insertOne({ name: 'Alice' }, { session });
await collection.insertOne({ name: 'Bob' }, { session });
await session.commitTransaction();
console.log('Transaction committed successfully');
} catch (error) {
console.error('Error in transaction:', error);
await session.abortTransaction();
console.log('Transaction aborted');
} finally {
session.endSession();
await client.close();
}
}
runTransaction();
在上面的示例中,首先创建了一个MongoDB客户端,然后使用startSession
方法创建一个新的会话。在会话中,开启一个事务,并在其中执行两次插入操作。最后,通过commitTransaction
方法提交事务。如果在事务过程中出现了错误,会通过abortTransaction
方法中止事务。
需要注意的是,使用MongoDB的事务功能需要确保MongoDB版本在4.0以上,并且数据库引擎为WiredTiger。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。