如何在 python 中修改嵌套 pymongo 字典记录中的字段
How to modify a field in a nested pymongo dictionary record in python
我有一个具有以下结构的 mongo 数据库
{
"_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
字段,例如我需要用 id
103
到 N
我在下面尝试过,它正在工作,但我不会提前知道列表编号 (2
)。
update_one({"_id": id_1}, {'$set': {"data.2.in_stock":'N'}})
我在变量中有值 2
但不确定如何在上述查询中传递它。有人可以帮忙吗?
您需要使用 $
positional operator。请注意,这将仅匹配第一个匹配的数组元素。
db.mycollection.update_one({'_id': id_1, 'data.id': 103}, {'$set': {"data.$.in_stock":'N'}})
我有一个具有以下结构的 mongo 数据库
{
"_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
字段,例如我需要用 id
103
到 N
我在下面尝试过,它正在工作,但我不会提前知道列表编号 (2
)。
update_one({"_id": id_1}, {'$set': {"data.2.in_stock":'N'}})
我在变量中有值 2
但不确定如何在上述查询中传递它。有人可以帮忙吗?
您需要使用 $
positional operator。请注意,这将仅匹配第一个匹配的数组元素。
db.mycollection.update_one({'_id': id_1, 'data.id': 103}, {'$set': {"data.$.in_stock":'N'}})