@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 обеспечивается блокировками журнала и блокировками на уровне документа. Это означает, что действия других запросов не смогут негативно повлиять на выполняемую операцию.