#mongodb #mongoose
Вопрос:
У меня возникла проблема с обновлением документа, которая может быть вызвана состоянием гонки или какой-то ошибкой в конфигурации моего сервера MongoDB. Мне трудно разобраться в точной проблеме.
Я выполняю следующий запрос на обновление:
const id = '123' // The same for every update
const file = {
orderIndex: 1, // This changes for every update
url: 'foo'
}
await DataModel.findByIdAndUpdate(id, {
$set: {
[`images.${file.orderIndex}`]: file
}
})
Это обновление происходит 15 раз менее чем за секунду и не более того. Журналы подтверждают, что происходит 15 обновлений и что orderIndex
это правильно.
Что я вижу в своей базе данных, так это то, что около 10 элементов массива обновляются. Где-то между 1 и 5 не обновляются.
Поэтому я думаю, что это состояние расы findByIdAndUpdate
, но оно атомарное, так что это не может быть так.
Возможно ли, что на моем сервере MongoDB произошла какая-то неправильная конфигурация? Текущая конфигурация — это в основном то, что показывает начало работы, ничего особенного.
# Where and how to store data.
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# network interfaces
net:
bindIpAll: true
# how the process runs
processManagement:
timeZoneInfo: /usr/share/zoneinfo
security:
authorization: enabled
keyFile: /root/mongodb.key
replication:
replSetName: rsLocal
Единственное, что я добавил здесь, — это набор локальных реплик только с одним основным.
Я не вижу другого места, откуда могла бы возникнуть эта проблема, кроме проблемы с сервером. Есть какие-нибудь идеи?