Mỗi ngày, tôi nhận được một kho tài liệu (một bản cập nhật). Những gì tôi muốn làm là chèn từng mục chưa tồn tại.
- Tôi cũng muốn theo dõi lần đầu tiên tôi chèn chúng và lần cuối cùng tôi nhìn thấy chúng trong một bản cập nhật.
- Tôi không muốn có tài liệu trùng lặp.
- Tôi không muốn xóa tài liệu đã được lưu trước đó nhưng không có trong bản cập nhật của tôi.
- 95% (ước tính) của các hồ sơ không được sửa đổi từ ngày này sang ngày khác.
Tôi đang sử dụng trình điều khiển Python (pymongo).
Những gì tôi hiện đang làm là (mã giả):
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)
Vấn đề của tôi là nó rất chậm (40 phút cho ít hơn 100 000 hồ sơ và tôi có hàng triệu trong số chúng trong bản cập nhật). Tôi khá chắc chắn rằng có một cái gì đó được xây dựng để làm điều này, nhưng tài liệu để cập nhật () là mmmhhh .... một chút ngắn gọn .... ( http://www.mongodb.org/display/DOCS/Updating )
Ai đó có thể tư vấn làm thế nào để làm nó nhanh hơn?