簡體   English   中英

mongodb,更新數組中的數組元素

[英]mongodb, update array element in array

我有麻煩了。 我需要更新選定的數組(數組中的數組)中的值。 例如我有這樣的文件:

{
    "_id" : ObjectId("59eccf5ea7f6ff30be74d8ce"),
    "name" : "some name",
    "description" : "some description",
    "users" : [ 
    {
        "id" : ObjectId("59d1549f4f5c6f6e0f1d6576"),
        "technologies" : [
            {"id": ObjectId("59450bc718fda360fdf4a719")},       
        ]
    }, 
    {
        "id": ObjectId("59d1549e4f5c6f6e0f1d6571"),
        "technologies": [
            {"id": ObjectId("59450f8318fda360fdf4a78b")},
            {"id": ObjectId("59450bc718fda360fdf4a719")},
            {"id": ObjectId("59450e3f18fda360fdf4a767")}
        ]
    },
    {
        "id": ObjectId("59d154a44f5c6f6e0f1d65af"),
        "technologies": [
            ObjectId("59450f8318fda360fdf4a78b")
        ]
    }
    ]
}

我需要從確切的用戶中刪除確切的技術。 我只知道:

_id-全局文檔ID

userId:“ users.id”元素

technologyId:'users。$。technologies。$。id'應該刪除的技術項目的ID

mongo的文檔說我不能在更新語句中使用兩個$,但是也許存在一些避免這樣做的動作?

請嘗試以下操作:

db.yourColl.update(
    {
        "_id": ObjectId("59eccf5ea7f6ff30be74d8ce"),
        "users.id": ObjectId("59d1549e4f5c6f6e0f1d6571")
    },
    {
        "$pull": {
            "users.$.technologies": {
                "id": ObjectId("59450bc718fda360fdf4a719")
            }
        }
    }
)

結果應為:

{ 
    "_id" : ObjectId("59eccf5ea7f6ff30be74d8ce"), 
    "name" : "some name", 
    "description" : "some description", 
    "users" : [
        {
            "id" : ObjectId("59d1549f4f5c6f6e0f1d6576"), 
            "technologies" : [
                {
                    "id" : ObjectId("59450bc718fda360fdf4a719")
                }
            ]
        }, 
        {
            "id" : ObjectId("59d1549e4f5c6f6e0f1d6571"), 
            "technologies" : [
                {
                    "id" : ObjectId("59450f8318fda360fdf4a78b")
                }, 
                {
                    "id" : ObjectId("59450e3f18fda360fdf4a767")
                }
            ]
        }, 
        {
            "id" : ObjectId("59d154a44f5c6f6e0f1d65af"), 
            "technologies" : [
                ObjectId("59450f8318fda360fdf4a78b")
            ]
        }
    ]
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM