仅当对象属性等于搜索词时,如何更新数组中的对象

时间:2019-07-08 08:24:31

标签: mongodb

这里是虚拟JSON:

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

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

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

2 个答案:

答案 0 :(得分:2)

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

尝试一下:

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

在MongoDb官方文档中详细了解$(update) positional operator,以获取详细信息。

答案 1 :(得分:1)

可悲的是,佐蒂的答案是错误的,但我终于使它起作用了:

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