У меня есть эти операции:вручную заблокировать для MongoDB
- Найти документ из коллекции.
- Манипулировать базой doc.prop на текущее значение, которое «prop» является строкой.
- Обновить документ обратно в коллекцию.
В этом случае я должен убедиться, что эти операции являются атомарными, поскольку обновление doc.prop должно основываться на текущем значении.
Вот два подхода: 1. Добавьте свойство valueKey (Number) в doc, убедитесь, что значениеKey соответствует при обновлении документа. Увеличьте значениеKey после обновления. Если значениеKey не сопоставлено, отметьте это обновление как сбой и повторите попытку. 2. Используйте «fsyncLock», предоставленный MongoDB для блокировки всего экземпляра mongod во время операций.
1-й подход, о котором я упоминал выше, хорошо, но при столкновении с огромным объемом этих операций одновременно могут возникать «сбой» и «повторная попытка».
2-й подход, который я еще не пробовал, я думаю, что он предназначен для резервного копирования базы данных и не подходит в этом случае.
Так что мне интересно, есть ли другой эффективный подход?