Setiap hari, saya menerima stok dokumen (pembaruan). Yang ingin saya lakukan adalah memasukkan setiap item yang belum ada.
- Saya juga ingin melacak saat pertama kali saya memasukkannya, dan terakhir kali saya melihatnya dalam pembaruan.
- Saya tidak ingin memiliki dokumen duplikat.
- Saya tidak ingin menghapus dokumen yang sebelumnya telah disimpan, tetapi tidak ada dalam pembaruan saya.
- 95% (diperkirakan) dari catatan tidak dimodifikasi dari hari ke hari.
Saya menggunakan driver Python (pymongo).
Apa yang saya lakukan saat ini adalah (pseudo-code):
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)
Masalah saya adalah sangat lambat (40 menit untuk kurang dari 100.000 catatan, dan saya memiliki jutaan dari mereka dalam pembaruan). Saya cukup yakin ada sesuatu yang dibangun untuk melakukan ini, tetapi dokumen untuk pembaruan () adalah mmmhhh .... agak singkat .... ( http://www.mongodb.org/display/DOCS/Updating )
Adakah yang bisa menyarankan cara melakukannya dengan lebih cepat?