我有一个Python应用程序迭代地遍历MongoDB(3.0.2)集合中的每个文档(通常介于10K和1M文档之间),并添加新字段(可能使文档中的字段数量增加一倍/三倍) )。
我最初的想法是,我会使用整个修订后的文档(使用pyMongo) - 现在我在质疑:
答案 0 :(得分:0)
这实际上是一个很好的问题,可以通过几种不同的方式解决,具体取决于您管理数据的方式。
如果您要插入其他字段,这是否意味着您的数据会在以后添加其他字段,唯一的更改是添加其他字段?如果是这样,你可以 set the ttl on your documents so that the old ones drop off over time 。请记住,如果这样做,您将需要设置一个索引,通过降低_id对结果进行排序,以便在较旧的添加之前选择最新的添加。
这样做的好处是,您不断地编写数据而不是寻找和更新数据,因此速度更快。关于upserts与批量插入。自批量转发requires you to find the original document first以来,批量插入始终比upsert更快。
db.document.find_one()
而不是db.document.find()
,以便只返回当前记录。