有没有办法在mongoDB中向上插入数据框?

问题描述

我在MongoDB中有一个现有数据,其中主键设置为“日期”,其中有几个字段。

我想将具有相同字段的新pandas数据框向上插入到MongoDB中的现有数据框

例如,我有一个看起来像

的df

enter image description here

我想添加看起来像df的

enter image description here

所以重复的索引2017-05-19 21:19:00,2017-05-19 21:20:00,2017-05-19 21:21:00 使用新值进行更新,并将其他新索引添加到现有df

所以最终的df应该看起来像这样

enter image description here

我当前正在使用

    try:
        cursor.insert_many(data,ordered=False)
    except pymongo.errors.BulkWriteError as e:
        print(e.details['writeErrors'])

做到这一点,并且此函数在附加新索引时效果很好,但是会抛出

'keyValue': {'date': datetime.datetime(2020,8,15,9,24)},'errmsg': 'E11000 duplicate key error collection: bitcoin.raw index: date_1 dup key: { date: new Date(1597483440000) }'

重复索引上的错误种类。

有没有办法解决这个问题? 预先感谢。

解决方法

您不能使用insert_many()。您将需要迭代数据框并为每个记录使用replace_one(),并使用与日期和upsert=True设置相匹配的过滤器。

使用类似的东西:

for row in df.to_dict(orient='records'):
    db.mycollection.replace_one({'date': row.get('date')},row,upsert=True)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...