首页 > 解决方案 > 从循环更新对象数组

问题描述

我想遍历orderArray并为每个在 Mongoorder中记录。一切都好find_one_and_update

问题是当我尝试再次循环时itemArray,对于每个item对象,将其插入product数组中:

for order_dico in response['orderArray']:
    order = order_dico['order']                        
    db.Order.find_one_and_update(
        {"orderId":order['orderID']},
        {
            "$set":{
                "orderId":order['orderID'],
                "product":
                    [
                        ######### ######### ######### 
                        ######### here is the error
                        ######### ######### ######### 
                        for item in order['itemArray']:
                            {
                                "prodId":item['item']['sku'],
                                "quantity":item['item']['quantity'],
                                "title":item['item']['title'],
                                "pic":item['item']['thumbnailURL'],
                                "price":item['item']['price']
                            }
                    ]
                }
            }
        )

我收到了这个错误:

invalid syntax (<unknown>, line 57)

这是order对象:

{
    order:{
        orderID: 1234,
        itemArray: [
                      item:{
                          itemID: 709475209,
                          sku: "1004",
                          ....
                      }
                   ]
          }
}

稍后编辑

解决方法:先创建一个空数组,将对象压入循环内

 for order_dico in response['orderArray']:
        order = order_dico['order']  
        product=[]
        for item in order['itemArray']: 
            product.append({
                "prodId":item['item']['sku'],
                "quantity":item['item']['quantity'],
                "title":item['item']['title'],
                "pic":item['item']['thumbnailURL'],
                "price":item['item']['price']
            })

然后将结果数组添加到$set

"$set":{      
         ...
         "product":product
}

标签: pythonmongodbpymongo

解决方案


推荐阅读