Каждый день я получаю запас документов (обновление). Что я хочу сделать, это вставить каждый элемент, который еще не существует.
- Я также хочу отслеживать первый раз, когда я их вставил, и последний раз, когда я видел их в обновлении.
- Я не хочу иметь дубликаты документов.
- Я не хочу удалять документ, который был ранее сохранен, но отсутствует в моем обновлении.
- 95% (по оценкам) записей не изменены со дня на день.
Я использую драйвер Python (pymongo).
В настоящее время я делаю (псевдокод):
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)
Моя проблема в том, что это очень медленно (40 минут для менее чем 100 000 записей, и у меня их миллионы в обновлении). Я почти уверен, что для этого есть что-то встроенное, но документ для update () - это ммммххх ... немного кратко .... ( http://www.mongodb.org/display/DOCS/Updating )
Может кто-нибудь посоветовать, как это сделать быстрее?