Добавьте поле в существующий документ MongoDB (с Мангустом в узле.Яш)

у меня есть этот существующий документ в коллекции Article в базе данных MongoDB:

[ { site: 'www.atlantico.fr',
date: '2014-05-27T11:10:19.000Z',
link: 'http://www.atlantico.fr/example.html',
_id: 538473817eb00f082f4803fc,
__v: 0} ]

Я хочу добавить новое поле day со значением 'example' к этому документу, используя Мангуста в узле.js. Так я и делаю:

Article.update(
      { link: 'http://www.atlantico.fr/example.html'}, 
      { $set : {day : 'example'} }, 
       function(err){  
                    });

но это не работает, потому что, когда я запрашиваю документ после этого, нет нового поля day появляется...

Я, должно быть, сделал ошибку при использовании update или $set в Мангусте, но я не могу найти точно свою ошибку.

что я упустил? Спасибо!

3 ответов


попробовать

Article.update(
     {link: 'http://www.atlantico.fr/example.html'}, 
     {day : 'example' },
     {multi:true}, 
       function(err, numberAffected){  
       });

и не забудьте добавить день к схемы.


Article.findByIdAndUpdate(id, { $set: { day: 'example' }}, { new: true }, function (err, article) {
  if (err) return handleError(err);
  res.send(article);
});

Я предпочитаю этот способ, потому что он содержит функцию обратного вызова.

ссылка и дополнительная информация:http://mongoosejs.com/docs/documents.html


await Users.updateOne( {link: 'http://www.atlantico.fr/example.html'},{ $set: { day : 'example'} }, { multi: true });
  • обновление устаревших
  • использовать await для работы с БД
  • Если вы хотите добавить новый файл в коллекцию, сначала проверьте, добавлен ли он в модель или нет (если вы не хотите использовать этот файл как обязательный, сделайте это как "required: false")