我有一个python脚本,它每天收集数据并将其插入MongoDB集合(约1000万个文档)。有时,工作失败了,剩下的部分数据对我没有用。我想先将数据插入到暂存集合中,然后仅在作业完成且数据完成后才将所有文档从暂存集合中复制或移动到最终集合中。我似乎找不到作为“批量”类型操作执行此操作的直接解决方案,但似乎应该有一个解决方案。
在SQL中将是这样的:
INSERT INTO final_table
SELECT *
FROM staging_table
Run Code Online (Sandbox Code Playgroud)
我以为db.collection.copyTo()可以解决此问题,但似乎使目标集合成为源集合的克隆。
此外,我从中知道:mongodb将文档从一个集合移到另一个集合,我可以执行以下操作:
var documentsToMove = db.collectionA.find({});
documentsToMove.forEach(function(doc) {
db.collectionB.insert(doc);
}
Run Code Online (Sandbox Code Playgroud)
但是似乎应该有一个更有效的方法。
那么,如何才能从一个集合中获取所有文档,并以最有效的方式将它们插入到另一个集合中?
注意:最终集合中已经有数据。我要移动的新文档将添加到此数据中,例如,如果我的暂存集合有2个文档,而我的最终集合有10个文档,那么在转移暂存数据后,我的最终集合中将有12个文档。
mongodb ×2