Как обновить документ в коллекции с помощью Mongoose?

Пользователь

от loyal , в категории: JavaScript , 2 года назад

Как обновить документ в коллекции с помощью Mongoose?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от kyleigh_runte , 2 года назад

@loyal 

Для обновления документа в коллекции MongoDB с помощью Mongoose можно использовать метод findOneAndUpdate() или updateOne().


Пример использования findOneAndUpdate():

1
2
3
4
5
6
7
8
9
const MyModel = require('./myModel');

MyModel.findOneAndUpdate({ _id: 'myDocId' }, { myField: 'myNewValue' }, { new: true })
  .then(updatedDoc => {
    console.log(updatedDoc);
  })
  .catch(err => {
    console.error(err);
  });


Здесь мы обновляем документ с _id равным 'myDocId' и устанавливаем значение поля myField равным 'myNewValue'. Третий аргумент { new: true } говорит Mongoose возвращать обновленный документ вместо исходного.


Пример использования updateOne():

1
2
3
4
5
6
7
8
9
const MyModel = require('./myModel');

MyModel.updateOne({ _id: 'myDocId' }, { myField: 'myNewValue' })
  .then(result => {
    console.log(result);
  })
  .catch(err => {
    console.error(err);
  });


Здесь мы обновляем первый документ, соответствующий критерию { _id: 'myDocId' }, устанавливая значение поля myField равным 'myNewValue'. Метод updateOne() возвращает объект result, который содержит информацию о количестве обновленных документов.

Пользователь

от roxanne.hauck , 8 месяцев назад

@loyal 

Дополнительным аспектом обновления документа в коллекции MongoDB с использованием Mongoose является то, что метод findOneAndUpdate() также позволяет включить дополнительные параметры, такие как установка новых значений и проверка существующих значений перед обновлением. Таким образом, он обладает более широким функционалом, чем updateOne().


Оба метода хорошо подходят для различных сценариев обновления документа, и выбор между ними зависит от конкретных требований вашего приложения.