Эффективная альтернатива для .save() на существующей модели.Документ

#node.js #database #mongodb #mongoose #mongoose-schema

Вопрос:

У меня есть несколько вопросов относительно .сохранить при выходе из документа.

Я ищу эффективное решение для обновления документа.

Я слышал об .updateOne() этом , но я чувствую себя незнакомым с этим, так как мне нужно проанализировать поле, которое должно быть обновлено, а затем проанализировать значения из всего кэшированного документа.

.save() , сохраняет всю мою работу, но я ищу альтернативу, так как ошибка parallelsaveerror возникает, когда у меня много быстрых запросов на сохранение , и мне приходится кэшировать документ как «документ мангуста» (я не хочу извлекать его раньше), который использует много оперативной памяти.

Thx заранее!

 Version:
mongoose: ^5.10.2,
nodejs: v14.15.5
mongodb: node driver on mongodb atlas
 

Ответ №1:

вот операция по переписыванию данных с moongose

 let queryOperation = [];
      queryOperation.push({
          updateOne: {
            filter: hereGoesWhereCondition, //{_id: user._id}
            update: data, // object of fields to update
          }
        });
      const name = await model.bulkWrite(queryOperation); //model is the table in which you want to update
 

Комментарии:

1. Дело в том, что я не хочу анализировать поля для обновления вручную. Есть ли какое-либо более простое решение или какая-либо функция, когда у меня есть две версии документа. Я могу сравнить его, а затем он автоматически предоставит мне поля для обновления?

2. Я думаю, нет, возможно, кто-то придумает какой-нибудь трюк

3. Но должно же быть что-то, что библиотека мангуста делает в бэкэнде