Изменение имени ключа в mongodb в зависимости от его значения - PullRequest
0 голосов
/ 12 марта 2019

У меня есть список элементов element_list=['A','C'], и мой документ в mongodb имеет вид:

"product_id": {
    "$oid": "AA"
},
"output": [
    {
        "product": {
            "$oid": "A"
        },
        "value": 1
    },
    {
        "product": {
            "$oid": "B"
        },
        "value": 1
    },
]
}

то, что я хочу, основано на моем element_list значении, ключ должен измениться как:

"product_id": {
    "$oid": "AA"
},
"products": [
    {
        "product": {
            "$oid": "A"
        },
        "value": 1
    },
    {
        "Offer": {
            "$oid": "B"
        },
        "value": 1
    },
]
}

'B' отсутствует в element_list, поэтому его ключ Offer. Как автоматически обновить несколько похожих документов в python?

1 Ответ

0 голосов
/ 12 марта 2019

попробуй

oids = set([e['product_id']['$oid'] for e in data])
for product in data:
    new_products = []
    for output in product['output']:
        key = 'Offer' if output['product']['$oid'] not in oids else 'product'
        new_products.append({key: {'$oid': output['product']['$oid'], 'value': output['value']}})
    product['products'] = new_products
    del product['output']
print(data)
...