Jeden Tag erhalte ich einen Dokumentenbestand (ein Update). Ich möchte jedes Element einfügen, das noch nicht vorhanden ist.
- Ich möchte auch verfolgen, wann ich sie zum ersten Mal eingefügt habe und wann ich sie das letzte Mal in einem Update gesehen habe.
- Ich möchte keine doppelten Dokumente haben.
- Ich möchte kein Dokument entfernen, das zuvor gespeichert wurde, aber nicht in meinem Update enthalten ist.
- 95% (geschätzt) der Aufzeichnungen sind von Tag zu Tag unverändert.
Ich benutze den Python-Treiber (Pymongo).
Was ich derzeit mache, ist (Pseudocode):
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)
Mein Problem ist, dass es sehr langsam ist (40 Minuten für weniger als 100 000 Datensätze, und ich habe Millionen davon im Update). Ich bin mir ziemlich sicher, dass dafür etwas eingebaut ist, aber das Dokument für update () ist mmmhhh .... ein bisschen knapp .... ( http://www.mongodb.org/display/DOCS/Updating )
Kann jemand raten, wie es schneller geht?