Todos os dias, recebo um estoque de documentos (uma atualização). O que eu quero fazer é inserir cada item que ainda não existe.
- Também quero acompanhar a primeira vez que os inseri e a última vez que os vi em uma atualização.
- Não quero documentos duplicados.
- Não quero remover um documento que foi salvo anteriormente, mas não está na minha atualização.
- 95% (estimado) dos registros não são modificados diariamente.
Estou usando o driver Python (pymongo).
O que atualmente faço é (pseudo-código):
for each document in update:
existing_document = collection.find_one(document)
if not existing_document:
document['insertion_date'] = now
else:
document = existing_document
document['last_update_date'] = now
my_collection.save(document)
Meu problema é que é muito lento (40 minutos para menos de 100.000 registros e tenho milhões deles na atualização). Tenho certeza de que há algo embutido para fazer isso, mas o documento para update () é mmmhhh .... um pouco mais conciso ... ( http://www.mongodb.org/display/DOCS/Updating )
Alguém pode aconselhar como fazê-lo mais rápido?