我有一个Python应用程序,该应用程序迭代遍历MongoDB(3.0.2)集合中的每个文档(通常在10K和1M文档之间),并添加新字段(可能使文档中字段的数量增加一倍/三倍)。
我最初的想法是,我将使用整个修订后的文档(使用pyMongo)增加-现在,我在质疑:
这实际上是一个好问题,可以根据您如何管理数据以几种不同的方式解决。
如果您要追加其他字段,这是否意味着您的数据将在以后的某个时间点追加其他字段,唯一的变化就是增加了其他字段?如果是这样,您可以在文档上设置ttl,以便旧文档随时间流逝。请记住,如果要执行此操作,则需要设置一个索引,该索引以_id降序对结果进行排序,以便在较旧的项之前选择最新的项。
以这种方式执行此操作的好处是您可以不断地写入数据,而不是查找和更新数据,因此速度更快。
关于upserts与批量插入。批量插入总是比upsert更快,因为批量upserting要求您首先查找原始文档。
db.document.find_one()
与之相对,db.document.find()
以便仅返回当前记录。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句