Здравствуйте. Подскажите, пожалуйста, как обеспечить атомарность операции bulkWrite что бы

записывалось либо всё, либо ничего. Что бы работал как транзакция.

На данный момент делаю так(из node.js через драйвер mongo):
let docsForUpsert = [];

for (let j in queueForArch){
docsForUpsert.push({
"updateOne": {
"filter": {
"_id": queueForArch[j]._id
},
"update": {
$set: queueForArch[j],
$setOnInsert: {
"archiveDate": new Date()
}
},
"upsert": true
}
});

if (docsForUpsert.length === 1000) {
await db.collection(archiveColl).bulkWrite(docsForUpsert);
docsForUpsert = [];
}
}

При возникновении ошибки на одном из документов(на нём дублированное значение поля, на котором висит уник.индекс) происходит ошибка в этом операторе, но некоторые заинсерченные записи остаются в БД. Т.е. транзакционность не обеспечивается. Как обеспечить транзакционность на уровне одного вызова bulkWrite?

1 ответов

6 просмотров

использовать транзакции

Похожие вопросы

Обсуждают сегодня

if (user?.choseType === 'oneDay') { await ctx.reply( 'Добро пожаловать в команду «Магнита»! Правда, на один день ☺️ ', ); await ctx.s...
Kokni
1
Читаю сейчас [нет, уже больше не читаю!] курсовую о Булгакове, написанную, похоже, с помощью ChatGPT. Это удивительный психоделический опыт. Текст в основном написан в стиле б...
✨ Uni [🌊 В отпуске]
1
Может кто подсказать какие требования к изображениям для обучения Yolo v8? Как то разрешение, размер выделяемого обьекта в пикселях, оптимальное кол-во изображений. А то я пыт...
Владислав😎
16
Это фейк @cruppto_newbot?
Antskup
13
всем салют сегодня утро заметил что бот не может отправлять фотки по url. ручками в браузере ссылка норм открывает фотки. падает ошибка 'Bad Request: failed to send message ...
Vasya Ivanov
9
ребят, привет. за какое время бот полученную заявку на вступление в группу может принять \отклонить? Помню речь была про 5 минут, сейчас как?
Роман Ромашин :)
10
Доброго времени суток. Правильно ли я понимаю, что с введением новой платежной единицы stars, я просто могу оставить текущую платёжку от Юкассы, которая выполняется на сайте с...
Prokhor Chulkov
7
вопрос: кто как решает вопрос с динамической подгрузкой скриптов для отдельных страниц с включенным turbo router?
Sergei Toroptsev
25
Добрый день! Не подскажете как к модели Категории Шопоголика добавить отношение Тейлора. Пробовал по документации, но не получается. Мб уже кто-то делал?
Николай Афанасенко
6
Сonst magicTgHTML = (text, entities) => { let processedText = text; let offsetShift = 0; entities.forEach(entity => { const { offset, length, type, url, ...
Андрей
1
Карта сайта