每天我会收到一批文档(一个更新)。我的目标是插入那些不存在的项目。
- 我还想追踪第一次插入它们的时间以及它们最后一次出现在更新中的时间。
- 我不想有重复的文档。
- 我不想删除已经保存过但不在我的更新中的文档。
- 大约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)
我的问题是更新速度非常慢(不到 100,000 条记录需要 40 分钟,而我的记录数有百万级别)。我相信 MongoDB 内置了一些方法可以更快地完成更新,但是 update() 的文档有点简略了。(http://www.mongodb.org/display/DOCS/Updating ) 请问有谁能提供更快的方法吗?