Node.js 多层嵌套数组中的MongoDB更新操作

Node.js 多层嵌套数组中的MongoDB更新操作,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我需要帮助更新以下集合 { _id: "5983548781331adf45ec5" "name": "Company Name", "workspaces":[ { _id: "7865548781331adf45ec5" "name": "workspace 1", "cards": [ { _id: "786

我需要帮助更新以下集合

{
    _id: "5983548781331adf45ec5"
    "name": "Company Name",
    "workspaces":[
        {
            _id: "7865548781331adf45ec5"
            "name": "workspace 1",
            "cards": [
                {
                    _id: "7865548781331adf478er",
                    "name": "card 1",
                    "panelId"; "1"
                },
                {
                    _id: "7865548781331adf4as34",
                    "name": "card 2",
                    "panelId"; "1"
                },
                {
                    _id: "7865548781331adf43548",
                    "name": "card 3",
                    "panelId"; "2"
                }
            ]
        }
    ]
},
{
    _id: "we34548781331adf45ec5"
    ....
}

在上面的集合中,我只想在工作区中添加panelId=1的卡,前提是它的panelId=1的卡少于2张。在上面的文档中,我无法执行该操作,因为它有两个panelId=1的卡。我需要知道如何通过一个查询实现这一点。我用nodejs和mongoose来做这个。当我进行查询时,我已经知道文档id和工作区id。

您真的不能。不能使用多个$operators在多个级别的数组中进行匹配。如果这是一种常见的操作,你应该考虑改变你的模式——也许是让文档代表卡片并将工作空间ID反化为它们?