如何从数组中删除对象?

时间:2015-04-14 23:57:19

标签: mongodb mongoose

我想从数组中删除一个对象。以下是我正在使用的架构:

event: {
    invitees: {
        users : [{
            user: {
                type: String,
                ref: 'User'
            },
        }],
    }
}

我使用的查询如下所示,但它不起作用。基本上,当我运行这个脚本时没有任何反应。

Event.update(
        {"_id": req.params.event_id},
        {"$pull": {"invitees.users.user": req.params.user_id}},
        {safe: true, upsert: true},
        function (err, data) {
            if (err) {
                console.log(err);
            }
            return res.json({ success: true });
        }
    );

我做错了什么?

1 个答案:

答案 0 :(得分:1)

$pull运算符的field标识数组以从匹配的query中提取元素。

所以你的更新应该是这样的:

Event.update(
    {"_id": req.params.event_id},
    // { $pull: { <array field>: <query> } }
    {"$pull": {"invitees.users": {"user": req.params.user_id}}},
    {safe: true, upsert: true},
    function (err, data) {
        if (err) {
            console.log(err);
        }
        return res.json({ success: true });
    }
);