在mongodb中的字典插入中的字典

时间:2019-03-07 20:42:27

标签: python mongodb dictionary

我有一个嵌套的字典和一个列表名称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,但两者都不相同,并且查询也不同

0 个答案:

没有答案