Ogni giorno ricevo una scorta di documenti (un aggiornamento). Quello che voglio fare è inserire ogni elemento che non esiste già.
- Voglio anche tenere traccia della prima volta che li ho inseriti e l'ultima volta che li ho visti in un aggiornamento.
- Non voglio avere documenti duplicati.
- Non voglio rimuovere un documento che è stato precedentemente salvato, ma non è nel mio aggiornamento.
- Il 95% (stimato) dei record non è modificato di giorno in giorno.
Sto usando il driver Python (pymongo).
Quello che faccio attualmente è (pseudo-codice):
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)
Il mio problema è che è molto lento (40 minuti per meno di 100000 registrazioni e ne ho milioni nell'aggiornamento). Sono abbastanza sicuro che ci sia qualcosa incorporato per farlo, ma il documento per update () è mmmhhh .... un po 'conciso .... ( http://www.mongodb.org/display/DOCS/Updating )
Qualcuno può consigliare come farlo più velocemente?