如何在mongodb / mongoose模型中删除特定的数组条目?

时间:2016-11-23 01:42:29

标签: node.js mongodb mongoose mongoose-schema

我的mongoose模型类似于:

var UsersSchema = new Schema({
    my_username: {type: String},
    blocked_users: [{
        my_username: {type: String, required: true},
        display_name: {type: String, required: true}
    }],
    created_at: {type: Date, default: Date.now},
    updated_at: {type: Date, default: Date.now}
});

现在,我创建了端点,用于向此阵列添加新的blocked_users。它看起来如下:

usersRoutes.post('/:username/blockedUsers/add', function(req, res){
    var username = req.params.username;
    var blockedUser = req.body.blockedUser;

    if (blockedUser != undefined) {
        User.findByIdAndUpdate(
            username,
            {
                $push: {"blocked_users": blockedUser},
            },
            {safe: true, upsert: true, new: true},
            function(err, user) {
                if(err)
                    console.log(err);

                res.json(user);
            }
        );
    }
});

这很好用。但是如何从该列表中删除特定用户? 有没有办法只通过my_username而不是整个blockedUser对象将其从列表中删除?

1 个答案:

答案 0 :(得分:0)

试试这个:

User.findByIdAndUpdate(_id, {
    $pop: {"blocked_users": blockedUser._id}  
}, function (err, user) {
    // handle callback
});

blockedUser是您要从列表中删除的用户