mongoose更新成一个数组

我有这个模式

var ArticleSchema = new Schema({ user_id: { type: Schema.ObjectId, ref: "User"}, title: String, description: String, content: String, visible: Boolean, saved: Boolean, deleted: {type: Boolean, default: false }, permalink: String, created_at: { type: Date, default: Date.now }, edited_at: { type: Date, default: Date.now }, tags : [], comments: { comment: String, name: String, email: String, date: Date, deleted: Boolean, } 

});

我想将删除的字段更新到特定数组的comments数组中。

这是我如何做的。

  this.model.update( { _id: data.articleId }, { $set: { 'comments.$.deleted' : true } }, function(err, doc){ console.info(doc); console.info(err); callback(doc); }); 

};

没有任何反应,我直接在mongo控制台上尝试,它的工作原理。

但不是在mongoose。 出于任何原因,我得到了console.info(),null和0作为结果。 该文件从不更新。

如果我尝试更新其他值不嵌套它的作品。

你可以试试以下内容:

 this.model.update( { _id: data.articleId }, { $set: { 'comments.deleted' : true } }, function(err, doc){ console.info(doc); console.info(err); callback(doc); }); }; 

你的代码不工作,因为comments字段不是一个数组,而是一个embedded的子文档, $ 位置运算符只标识一个数组中的一个元素来更新,而不显式地指定数组中元素的位置。