Python 更新mongodb中列表中的特定值

Python 更新mongodb中列表中的特定值,python,mongodb,Python,Mongodb,我正在学习mongodb并在tornado中使用python 存储在表中的数据: t5 = [ { "Pid" : "1111", "Rid": "666", "Amount": 3000 } { "Pid" : ["1111","2222"], "Rid": "777", "Amount": 4000 } ] h = [ {"Pid" : "1111", "Rid": "666" "Amount": 2000 } ] 我想更新表中的数据值: t5 = [ { "Pid" :

我正在学习mongodb并在tornado中使用python

存储在表中的数据:

t5 = [ 
{
"Pid" : "1111",
"Rid": "666",
"Amount": 3000
 }
 {
 "Pid" : ["1111","2222"],
 "Rid": "777",
 "Amount": 4000
 }
]
h = [
{"Pid" : "1111",
"Rid": "666"
"Amount": 2000
}
]
我想更新表中的数据值:

t5 = [ 
{
"Pid" : "1111",
"Rid": "666",
"Amount": 3000
 }
 {
 "Pid" : ["1111","2222"],
 "Rid": "777",
 "Amount": 4000
 }
]
h = [
{"Pid" : "1111",
"Rid": "666"
"Amount": 2000
}
]
但我犯了个错误

我想要的输出是这样的,我只想更新
数量

[{
"Pid" : "1111",
"Rid": "666"
"Amount": 2000
}
{    
"Pid" : "1111",
"Rid": "777"
"Amount": 0
}]


since there is no match for the second Rid: 777 I want the amount to be 0
Amount:4000
用于
Pid:2222
,因此应将其设置为0

我已经尝试过像这样使用
itertools
来实现这一点

per_id = {}
for info in chain(h, t5):
    print("info", info)
    per_id.setdefault(info['Rid'], {}).update(info)
res = list(per_id.values())
但它不起作用,我得到的输出如下:

[{
"Pid" : "1111",
"Rid": "666"
"Amount": 2000
}
{    
"Pid" : "1111",
"Rid": "777"
"Amount": 4000
}]

我如何在mongodb中实现这一点,请任何人帮助我

您遇到了什么错误,您能否显示您的代码您希望更新查询或您的代码(执行更新查询)得到修复?如果这是第二次发布您的代码,您的预期输出让我觉得您想将两个文档合并为一个文档,但可能您需要一个数组来表示“Pid”、“Rid”、“Amount”的组合。假设这是一个名为“transaction”的对象,创建一个数组可能是解决方案。@StefanoSaitta是的,你是对的,我不知道如何创建一个对象并这样做。@6我已经编辑了我的问题,请看一看