, если пользователь A и пользователь B обновляют только один документ, и вы можете знать начальное значение и обновленное значение, попробуйте этот код:
Код попытайтесь обновить поле secret ,, и мызнаю, что начальное значение expertSecret
public void compareAndSet(String expertSecret, String targetSecret) {
// get a mongodb collection
MongoCollection<Document> collection = client.getDatabase(DATABASE).getCollection(COLLECTION);
BasicDBObject filter = new BasicDBObject();
filter.append("secret", expertSecret);
BasicDBObject update = new BasicDBObject();
update.append("secret", targetSecret);
collection.updateOne(filter, update);
}
Если не знаете начальное значение, как это сделать?
Вы можете добавить поледля репрезентативной операции, и перед обновлением проверьте поле.
Если необходимо обновить более одного документа, как это сделать? Для многодокументных транзакций требуется сервер mongo, чтобы получить дополнительную информацию от здесь
Однако в ситуациях, когда требуется обновление атомарности для обновлений нескольких документов или согласованность операций чтения с несколькими документами, MongoDB предоставляет возможность выполнять многодокументные транзакции с наборами реплик.Многодокументные транзакции могут использоваться в нескольких операциях, коллекциях, базах данных и документах.Многодокументные транзакции обеспечивают предложение «все или ничего».