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