mongodb: вставить, если не существует

Каждый день я получаю запас документов (обновление). Что я хочу сделать, это вставить каждый элемент, который еще не существует.

Я также хочу отслеживать первый раз, когда я их вставил, и последний раз, когда я видел их в обновлении.Я не хочу иметь дубликаты документов.Я не хочу удалять документ, который был ранее сохранен, но отсутствует в моем обновлении.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 )

Может кто-нибудь посоветовать, как это сделать быстрее?

Ответы на вопрос(4)

Ваш ответ на вопрос