Todos los días, recibo un stock de documentos (una actualización). Lo que quiero hacer es insertar cada elemento que aún no existe.
- También quiero hacer un seguimiento de la primera vez que los inserté y la última vez que los vi en una actualización.
- No quiero tener documentos duplicados.
- No quiero eliminar un documento que se ha guardado anteriormente, pero que no está en mi actualización.
- El 95% (estimado) de los registros no se modifican día a día.
Estoy usando el controlador Python (pymongo).
Lo que hago actualmente es (pseudocó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)
Mi problema es que es muy lento (40 minutos para menos de 100 000 registros, y tengo millones de ellos en la actualización). Estoy bastante seguro de que hay algo incorporado para hacer esto, pero el documento para la actualización () es mmmhhh ... un poco conciso ... ( http://www.mongodb.org/display/DOCS/Updating )
¿Alguien puede aconsejar cómo hacerlo más rápido?