在mongodb中编辑嵌套值

时间:2019-07-14 18:15:13

标签: mongodb pymongo

这是我的结构,我想给定用户ID和商品ID(Havelist中每个条目中的第一个元素-第一个条目中的5d2807a1eba04543f914d9da),更改数组中的最后一个值(第一种情况,第二种情况下为2),要么一次增加一次,要么一次减少一次。

这些字段没有名称,因此当我浏览它们时,它们被称为[0],[1],... [7](最后一个,我要编辑的字段)

{
    "_id" : "david",
    "havelist" : [ 
        [ 
            "5d2807a1eba04543f914d9da", 
            "aaaa", 
            "cccc", 
            null, 
            "bbbb", 
            "2", 
            "", 
            1
        ], 
        [ 
            "5d28079eeba04543f914d62f", 
            "dddd", 
            "zzzz", 
            null, 
            "bbbb", 
            "3", 
            "", 
            2
        ], 
        [ 
            "5d2807bdeba04543f914eb25", 
            "eeee", 
            "cccc", 
            null, 
            "zzzz", 
            "3", 
            "", 
            1
        ], 
    ],
    "email" : "w@w.com",
}

我尝试过

    k=USERS_COLLECTION.updateOne({'$and':[{'_id':'david'},{'havelist':{'$elemMatch':{'0':"5d2807a1eba04543f914d9da"}}}]},{'$set':{'havelist.$.7':0}})

为了将0赋予值

但是没有用

1 个答案:

答案 0 :(得分:0)

COLLECTION.find_one_and_update({'$and':[{'_id':'david'},{'havelist':{'$elemMatch':{'0':'5d2807a1eba04543f914d9da'}}}]},{'$set':{'havelist.$.7':0}})

这将成功将值更改为0。我仍在寻找有关如何将值增加或减少1的答案。