mongoose 从嵌套数组中删除一个对象

编程入门 行业动态 更新时间:2024-10-04 03:22:18

mongoose 从<a href=https://www.elefans.com/category/jswz/34/1771299.html style=嵌套数组中删除一个对象"/>

mongoose 从嵌套数组中删除一个对象

我正在尝试通过从嵌套数组中删除对象来使用猫鼬查找更新文档。我的目标文档如下:

user = {
    "userId" : "myId",
    "connections":
    [{
        "dateConnectedUnix": 1334567891,
        "isActive": true,
        "sessions": [
            {"device": "mobile", "country": "US"},
            {"device": "desktop", "country": "US"}
        ]
    }, {
        "dateConnectedUnix": 1334567893,
        "isActive": false,
        "sessions": [
            {"device": "mobile", "country": "CA"},
            {"device": "desktop", "country": "CA"}
        ]
    }]
}

这是我的尝试,但它没有更新文档:

Users.findOneAndUpdate({ "userId": "myId", "connections.dateConnectedUnix": 1334567891 },
    { $pull: { sessions: { device: "mobile" } } }, (err) => {
        if (err) {
            return res.status(404).json({ message: 'Error' });
        }
        return res.status(200).json({
            success: true,
            message: 'success'
        });
    }
);

生成的文档应如下所示:

user = {
    "userId" : "myId",
    "connections":
    [{
        "dateConnectedUnix": 1334567891,
        "isActive": true,
        "sessions": [
            {"device": "desktop", "country": "US"}
        ]
    }, {
        "dateConnectedUnix": 1334567893,
        "isActive": false,
        "sessions": [
            {"device": "mobile", "country": "CA"},
            {"device": "desktop", "country": "CA"}
        ]
    }]
}

基本上是通过 id 找到用户,然后通过日期找到连接,然后删除移动设备。在我的特定情况下,结果始终是一个匹配的文档和一个匹配的连接以及一个匹配的会话。

回答如下:

因为你的会话数组在连接里面

尝试使用“connections.$.sessions”代替会话,这样您的查询就可以了

Users.findOneAndUpdate({ "userId": "myId", "connections.dateConnectedUnix": 1334567891 },
    { $pull: { "connections.$.sessions" : { device: "mobile" } } }, (err) => {
        if (err) {
            return res.status(404).json({ message: 'Error' });
        }
        return res.status(200).json({
            success: true,
            message: 'success'
        });
    }
);

更多推荐

mongoose 从嵌套数组中删除一个对象

本文发布于:2024-05-30 16:49:11,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1770713.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:嵌套   组中   对象   mongoose

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!