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