【问题标题】:How to update object in array, only if object property is equal to search term [duplicate]仅当对象属性等于搜索词时,如何更新数组中的对象[重复]
【发布时间】:2019-11-17 17:40:57
【问题描述】:

这是虚拟 JSON:

{
    "_ID": ObjectId('xdfdsf'),
        "array": [
            {
                "name": "Jon",
                "permissions": [
                    "update",
                    "delete",
                    "create"
                ]
            },
            {
                "name": "Ben",
                "permissions":[
                    "update"
                ]
            }
        ]
}

等等。我想创建一个查询来搜索数组,在数组中查找名称为“Ben”的元素并将新权限推送到数组中。

这可能相对简单,但我完全迷路了。

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    您可以使用$ 位置运算符来执行updates

    试试这个:

    db.collection_name.update({
        "array.name" : "Ben"
    },{
        $push : {
            "array.$.permissions" : "new_permission"
        }
    }
    

    在 MongoDb 官方文档中阅读更多关于 $(update) positional operator 的详细信息。

    【讨论】:

    • 哈哈,是的,我刚刚发布了自己的答案,我错过了“$”,我想你是星期一,谢谢!
    【解决方案2】:

    遗憾的是,Zoti 的回答不正确,但我终于让它工作了:

    db.myCollection.update( { "array.name": "Ben"}, {$push: {"array.$.permissions": "read"}})
    

    【讨论】:

      猜你喜欢
      • 2020-02-20
      • 2020-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-25
      • 2011-03-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多