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