> Есть ли транзакции в 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:
JAVASCRIPTconst { 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 имеют накладные расходы (задержка, блокировки), поэтому их стоит использовать только при необходимости атомарности над несколькими документами. Для одиночных операций атомарность гарантируется на уровне документа.
> Похожие задачи по backend
Как решать проблемы с транзакциями при изменении нескольких агрегатов в одной транзакции
Был ли опыт оптимизации производительности систем или баз данных
Опыт работы с Kafka и другими очередями сообщений
Какой опыт работы с Redis, его структурами данных, pub/sub и стримами
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью