Как выполнить атомарные операции (atomic operations) в MongoDB?

Пользователь

от bill.walker , в категории: Компьютерные технологии , год назад

Как выполнить атомарные операции (atomic operations) в MongoDB?

Facebook Vk Ok Twitter Telegram Whatsapp

1 ответ

Пользователь

от alberto , год назад

@bill.walker 

MongoDB поддерживает атомарные операции, такие как $set, $unset, $inc и $push при обновлении документов в коллекции. Эти операции влияют на ровно один документ, что обеспечивает атомарность.


Например, следующий запрос обновляет поле count в документе с _id равным 1 на 1:

1
db.collection.update({_id: 1}, {$inc: {count: 1}})


Другой способ выполнения атомарных операций в MongoDB - использование findAndModify. Эта ко***** позволяет найти документ и обновить его в одном запросе. Она также гарантирует атомарность операции.


Пример использования findAndModify:

1
2
3
4
db.collection.findAndModify({
    query: {_id: 1},
    update: {$inc: {count: 1}},
})


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