我有一个嵌套的字典和一个列表名称product_list = [a1,a2,a3]我必须在检查product_list上的某些条件后将字典值插入mongodb中,我的最终字典是这样,
'5c3c913fbc6af726a8874bc3': {'a1': 1,
'a5': 5,}
我想在数据库中作为输出的是:
{
"_id": {
"$oid": "5c7a3483fb6fc072012c463d"
},
"product_id": {
"$oid": "5c3c913fbc6af726a8874bc3"
},
"recommend": [
{
"product": {
"$oid": "a1"
},
"value": 1
},
{
"offer": {
"$oid": "a5"
},
"value": 2
},
]
}
如果在product_list中存在推荐的产品,则关键是其他产品。我得到的输出是:
{
"_id": {
"$oid": "5c817bc28e6ef0add8e7aff8"
},
"product_id": {
"$oid": "5c3c913fbc6af726a8874bc3"
},
"offer": {
"$oid": "a5"
},
"value": 2
}
我的代码片段是:
from bson.objectid import ObjectId
for key,value in final_dict.items():
list_1=[]
list_2=[]
t=key
for j,k in value.items():
temp_1=j
temp_2=k
list_1.append(temp_1)
list_2.append(temp_2)
temp_3=dict(zip(list_1,list_2))
for temp_key,temp_value in temp_3.items():
if temp_key in product_list:
collection_1.update_one({'product_id':ObjectId(key) },{'$set':{'product': ObjectId(temp_key), "value":temp_value}},upsert=True)
else:
collection_1.update_one({'product_id':ObjectId(key) },{'$set':{'offer': ObjectId(temp_key), "value":temp_value}},upsert=True)
我经历了这个link,但两者都不相同,并且查询也不同