向现有MongoDB文档添加字段(在Node.js中使用Mongoose)

时间:2014-05-30 16:29:11

标签: javascript node.js mongodb mongoose updates

我在MongoDB数据库的集合Article中有这个现有文档:

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

我想在Node.js中使用Mongoose向此文档添加值day的新字段'example'。所以我这样做:

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

但它不起作用,因为当我在此之后查询文档时,没有出现新的字段day ...

在Mongoose中使用update$set时我肯定犯了一个错误,但我找不到我的错误。

我错过了什么?谢谢!

3 个答案:

答案 0 :(得分:13)

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

并且不要忘记在架构中添加日期。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

await Users.updateOne( {link: 'http://www.atlantico.fr/example.html'},{ $set: { day : 'example'} }, { multi: true });
  • 不推荐使用更新
  • 使用await进行数据库操作
  • 如果要在集合中添加新文件,请首先检查是否已将其添加到模型中 (如果您不希望使用该文件,则该文件为“ required:false”)