问题:使用mongo存储数据的时候,出现错误DuplicateKeyError: E11000 duplicate key error collection

    for i in all_data:
        down_list = []
        now_time = utility.get_this_time()
        for one_data in i:
            on_list = []
            new_list = async_real_time_data(one_data)
            for i in new_list:
                # 统一修改时间  或者  统一添加新时间
                i.update(update_time=now_time)
            on_list += new_list
        print on_list

        down_list += on_list
    print down_list

    mongo_manager.insert_many("temperature_predict_data", down_list)

提示内容是这样的:(使用的是python2)

DuplicateKeyError: E11000 duplicate key error collection:........index: _id_ dup key: { : ObjectId('5a425e8187ea64b6c051567a') }

百度后,发现有的人是因为for循环之类的错误,(我的问题是在两次for循环中都在外面执行了list +=)

修改后的代码是这样:(把for循环中要添加的数据统一到最里面的for循环中添加,就解决了这个问题)

down_list = []
    for i in all_data:
        now_time = utility.get_this_time()
        for one_data in i:
            new_list = async_real_time_data(one_data)
            for i in new_list:
                # 统一修改时间  或者  统一添加新时间
         
                i["update_time"] = now_time
                down_list.append(i)
    mongo_manager.insert_many("temperature_predict_data", down_list)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值