ทุกวันฉันได้รับเอกสาร (อัปเดต) สิ่งที่ฉันต้องการทำคือแทรกแต่ละรายการที่ไม่มีอยู่
- ฉันต้องการติดตามครั้งแรกที่ฉันแทรกพวกเขาและครั้งสุดท้ายที่ฉันเห็นพวกเขาในการอัปเดต
- ฉันไม่ต้องการมีเอกสารซ้ำ
- ฉันไม่ต้องการลบเอกสารที่ถูกบันทึกไว้ก่อนหน้านี้ แต่ไม่ได้อยู่ในการอัปเดตของฉัน
- 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 บันทึกและฉันมีนับล้านในการอัปเดต) ฉันค่อนข้างมั่นใจว่ามีบางอย่างในตัวสำหรับการทำเช่นนี้ แต่เอกสารสำหรับการอัปเดต () คือ mmmhhh .... สรุปสั้น ๆ .... ( http://www.mongodb.org/display/DOCS/Updating )
ใครสามารถแนะนำวิธีการให้เร็วขึ้น?