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