【问题标题】:How to modify a field in a nested pymongo dictionary record in python如何在python中修改嵌套pymongo字典记录中的字段
【发布时间】:2020-09-26 07:41:05
【问题描述】:

我有一个具有以下结构的 mongo db

{
"_id" : ObjectId("5f59c289fb28ab4476d4578b"),
"data" : [ 
    {
        "time" : "10-Sep-2020 11:33:22",
        "type" : "Med01",
        "id":123
        "expdate" : "01-Sep-2021",
        "in_stock" "Y"

    }, 
    {
        "time" : "10-Sep-2020 11:33:22",
        "type" : "Med06",
        "id":125
        "expdate" : "10-Sep-2020",
        "in_stock" "N"

    },
    {
        "time" : "10-Sep-2020 11:33:22",
        "type" : "LOC1",
        "id":103
        "expdate" : "10-Sep-2023",
        "in_stock" "Y"

    }
]

}

我想根据给定的id 更新in_stock 字段,例如我需要将医学的in_stockid 103 修改为N

我在下面尝试过,它正在工作,但我不会提前知道列表编号 (2)。

update_one({"_id": id_1}, {'$set': {"data.2.in_stock":'N'}})

我在变量中有值2,但不确定如何在上述查询中传递它。有人可以帮忙吗?

【问题讨论】:

    标签: python-3.x list dictionary nested pymongo-3.x


    【解决方案1】:

    您需要使用$ positional operator。请注意,这只会匹配第一个匹配的数组元素。

    db.mycollection.update_one({'_id': id_1, 'data.id': 103}, {'$set': {"data.$.in_stock":'N'}})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-10
      • 2021-12-13
      • 2018-09-13
      • 2019-07-18
      • 1970-01-01
      • 2021-09-27
      • 2020-07-04
      相关资源
      最近更新 更多