MST

星途 面试题库

面试题:MongoDB中如何在应用程序中开启一个事务

请描述在使用MongoDB时,应用程序中开启事务的基本步骤,假设使用的是Node.js与官方的MongoDB驱动,并且要考虑多文档事务的情况。
21.3万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试
  1. 连接到MongoDB
    const { MongoClient } = require('mongodb');
    const uri = "mongodb://localhost:27017";
    const client = new MongoClient(uri);
    async function run() {
        try {
            await client.connect();
    
  2. 获取数据库和集合
    const db = client.db('yourDatabaseName');
    const collection1 = db.collection('collection1');
    const collection2 = db.collection('collection2');
    
  3. 启动事务
    const session = client.startSession();
    session.startTransaction();
    
  4. 执行多文档操作
    try {
        await collection1.insertOne({ data: 'data for collection1' }, { session });
        await collection2.insertOne({ data: 'data for collection2' }, { session });
    
  5. 提交或回滚事务
        await session.commitTransaction();
    } catch (error) {
        await session.abortTransaction();
        throw error;
    } finally {
        await session.endSession();
        await client.close();
    }
    
    在上述步骤中,首先连接到MongoDB服务器,获取需要操作的数据库和集合。然后通过startSession开启一个会话,并在会话上调用startTransaction启动事务。在事务内可以对多个集合(多文档事务)进行操作,操作时要传递{ session }选项。如果所有操作成功,则调用commitTransaction提交事务;如果发生错误,则调用abortTransaction回滚事务。最后关闭会话和数据库连接。