【问题标题】:Within an array, remove an item from an array within each object that item appears in在数组中,从该项目出现的每个对象内的数组中删除一个项目
【发布时间】:2021-07-23 07:23:13
【问题描述】:

我的 mongodb 文档(表)'Org_unit' 看起来像这样:

{
    "_id": ObjectId("0894f016e6e2e073c19e051")
    "allowedusers": [
        "admin",
        "Fred",
        "Bob",
        "Layneh"
    ],
    "name": "News management",
    "divisions": [
        {
            "allowedusers": [
                "admin",
                "Larry",
                "Bob",
                "Harry",
                "Fred"
            ],
            "_id": ObjectId("60894f016e6e2e073c19e052"),
            "name": "Finances",
            "credentials": [
                {
                    "_id": ObjectId("94f0944f016e6e2e2342cc"),
                    "name": "FNB - FA",
                    "userName": "example@email.com",
                    "password": "examplePassword!@#"
                }
            ]
        },
        {
            "allowedusers": [
                "admin",
                "Larry",
                "Bob",
                "Harry",
                "Fred"
            ],
            "_id": ObjectId("60894f016e6e2e073c19e052"),
            "name": "Development",
            "credentials": [
                {
                    "_id": ObjectId("94f0944f016e6e2e2342cc"),
                    "name": "FNB - DEV",
                    "userName": "example@email.com",
                    "password": "examplePassword!@#"
                }
            ]
        }
    ],
    "__v": 11
}

这是我在这里的第一个帖子,你好!好的,所以我已经在这工作了几天了,但我无法做到这一点。

我想要做什么:

在“divisions”数组中,我想从他出现的每个对象“division”中的“allowedusers”数组中删除“Fred”。

我的尝试

我还是个新手,大约一个星期。 我已经尝试了很多次,但我得到的最接近的是:

Org_unit.updateMany({name: "News management"}, { $pull: {'divisions': {'allowedusers': "Fred"}}},{ multi: true })

^^ 如果他出现在“allowedusers”数组中,则删除整个分区

非常感谢任何与此相关的指导 提前谢谢你。

PS:(由于这是我发布的第一个问题,请告诉我将来如何改进我的问题!)

【问题讨论】:

    标签: javascript mongodb express mongoose mongodb-query


    【解决方案1】:

    演示 - https://mongoplayground.net/p/kR_NmQNO52y

    使用$[]

    all 位置运算符$[] 表示更新运算符应该修改指定数组字段中的所有元素。

    db.collection.update({
      name: "News management"
    },
    {
      $pull: {
        "divisions.$[].allowedusers": "Fred"
      }
    })
    

    【讨论】:

    • 非常感谢!看来我需要在 $ 上做更多的文档挖掘。
    猜你喜欢
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 2021-08-01
    • 1970-01-01
    • 2019-12-18
    相关资源
    最近更新 更多