> Есть ли транзакции в MongoDB (Node.js, MongoDB, C# /.NET, JavaScript, Go)

Уровень: senior · Роль: backend · Категория: Технические вопросы

Компании: TrendTech

Стек: Node.js, MongoDB, C# /.NET, JavaScript, Go

> Пример ответа

Да, в MongoDB транзакции есть, начиная с версии 4.0. Они поддерживают ACID-свойства (атомарность, согласованность, изоляцию, долговечность) для операций над несколькими документами, включая кросс-коллекционные и кросс-шардовые сценарии (в версии 4.2+).

В контексте Node.js и JavaScript транзакции реализуются через сессии. Пример с использованием драйвера MongoDB:

JAVASCRIPT
const { MongoClient } = require('mongodb');
async function runTransaction() {
const client = new MongoClient('mongodb://localhost:27017');
await client.connect();
const session = client.startSession();
try {
session.startTransaction();
const collection1 = client.db('db1').collection('orders');
const collection2 = client.db('db1').collection('inventory');
await collection1.insertOne({ orderId: 1, item: 'laptop' }, { session });
await collection2.updateOne(
{ item: 'laptop' },
{ $inc: { stock: -1 } },
{ session }
);
await session.commitTransaction();
console.log('Транзакция успешно завершена');
} catch (error) {
await session.abortTransaction();
console.error('Транзакция отменена:', error);
} finally {
session.endSession();
await client.close();
}
}

Важно: транзакции в MongoDB имеют накладные расходы (задержка, блокировки), поэтому их стоит использовать только при необходимости атомарности над несколькими документами. Для одиночных операций атомарность гарантируется на уровне документа.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью