Массив MongoDB findByIdAndUpdate не обновляет некоторые элементы

#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
 

Единственное, что я добавил здесь, — это набор локальных реплик только с одним основным.

Я не вижу другого места, откуда могла бы возникнуть эта проблема, кроме проблемы с сервером. Есть какие-нибудь идеи?