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的子文档, $
位置运算符只标识一个数组中的一个元素来更新,而不显式地指定数组中元素的位置。