如何从数组中删除对象?

How can I remove an object from an array?

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

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 });
        }
    );

我做错了什么?

$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 });
    }
);