Mongoose:在更新时覆盖数组属性

时间:2016-12-02 02:07:48

标签: node.js mongodb mongoose mongoose-schema mongoose-populate

如何根据给定数组作为源覆盖文档的数组属性?

架构:

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的数组,我想覆盖tags属性。我现在遇到的问题是它添加了新标签,但它不会删除不在源数组中的标签。

我目前正在使用findOneAndUpdate执行更新,如下所示:

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

1 个答案:

答案 0 :(得分:1)

您是否尝试过$ set operator?

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