2016-12-02 70 views
1

如何覆盖基于给定数组作为源的文档的数组属性?Mongoose:覆盖更新的数组属性

模式:

var postSchema = new mongoose.Schema({ 
    title: { type: String, required: true, index: { unique: true } }, 
    content: { type: String }, 
    tags: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Tag' }] 
}); 

我现在有标签的对象ID的数组,我想覆盖的标签属性。我现在遇到的问题是它添加了新的标签,但它不会删除不在源数组中的标签。

我目前正在使用findOneAndUpdate如下更新:

// Pseudo code example 
Post.findOneAndUpdate({ _id: id }, { tags: ["id1...", "id2..."], {}, cb); 

回答

1

你尝试$集合运算符?

Post.findOneAndUpdate({ _id: id }, { $set: {tags: ["id1...", "id2..."]}, {}, cb);

+0

谢谢,$ set操作符做到了。无法在最新的猫鼬文档中找到它。 – scripton

+0

$设置运营商是好的 –