Мой код собирает данные для группы ETFS, используя встроенные в Pandas алгоритмы сбора данных, и в течение дня и в конце, с данными за 5 лет. Индекс моих панд df - это индекс даты и времени.
Когда я создавал свою историческую базу данных, все работало хорошо. Теперь я хочу ежедневно обновлять свою базу данных с помощью задания cron, и для этого я создал временный «буфер».
Так что я думаю, что когда я пытаюсь вставить данные, которые уже находятся в БД, Монго пропустит их (в конце концов, я создал дату в качестве индекса). Таким образом, с этой идеей, если одна или несколько акций не имели данных за последние несколько дней, пытаясь вставить данные с избыточностью, я могу получить полную базу данных.
Однако я получаю следующую ошибку:
DuplicateKeyError: E11000 коллекция повторяющихся ошибок ключа: ETFs.EEM
индекс: идентификатор ключ дубликата: {: новая дата (1524700800000)}
Насколько я понимаю, монго должно было пропустить это. Что не так с этим кодом?
def insert_to_mongo():
for x in etfs.keys():
print 'Processing ' + x
data_points = len(etfs[x])
for i in range(data_points):
data = ({
'_id': etfs[x].index[i],
'open': float(etfs[x].iloc[i]['open']),
'high': float(etfs[x].iloc[i]['high']),
'low': float(etfs[x].iloc[i]['low']),
'close': float(etfs[x].iloc[i]['close']),
'adj close': float(etfs[x].iloc[i]['adj close']),
'volume': float(etfs[x].iloc[i]['volume']),
})
collection = db[x]
collection.insert_one(data)
print 'Inserted data successfully'