Mongoose:从嵌套数组中删除($ pull)

时间:2017-03-16 14:17:14

标签: node.js mongodb mongoose

我看了好几个主题,但是我无法让它发挥作用:

我的模型看起来像这样:

let UserSchema = new Schema({
    [...]
    feed: [
    {
        seen: Boolean,
        isOwnEntity: Boolean,
        activity: {
            type: mongoose.Schema.Types.ObjectId,
            ref: 'Activity'
    }
    }, {_id: false}],
    [...]
});

我现在想要使用更新删除此Feed中的条目,但更新不起作用:

User.update({'feed': {'$elemMatch': {'activity': this._id}}}, {'$pull': {'feed': {'activity': this._id}}});

我尝试使用和不使用$ elementMatch,根据:https://docs.mongodb.com/manual/reference/operator/update/pull/#up._S_pull

但是find()有效:

    User.find({'feed': {'$elemMatch': {'activity': this._id}}}).exec().then((users) => {
       users.forEach((user) => {
           user.feed = user.feed.filter((entry) => {
               return !entry.activity.equals(this._id);
           });
       user.save();
   });
});

0 个答案:

没有答案