我感兴趣的是使用游标将数据库从一个mongod复制到另一个mongod。我想限制发送的插入请求的数量,而不是单独插入游标中的每个文档,我想对每个游标批处理执行insert_many。
有没有办法在pymongo / python中执行此操作?
我已经尝试将光标转换为列表,然后调用insert_many,这样可行,但是如果集合超过了我拥有的ram数量,那么它就无法工作。
有关如何从光标中获取批次并将其转换为列表的任何想法都将不胜感激
谢谢!
答案 0 :(得分:0)
我还不能发表评论,但最近我遇到了同样的问题。我找到了很多解决方案,但没有一个解决方案对我的具体情况感到满
在你的情况下, 与python / pymongo一起使用光标吗?如果是这样,目前没有办法做到这一点,但我花了很多时间挖掘pymongo source code来确认,我想我可以使用他们的一些低级API来实现这一目标。我什么时候会通知你。
答案 1 :(得分:0)
到目前为止,这是我的“切片/批处理”解决方案,它比单独迭代光标中的每个文档更有效:
您可以调整批量大小以适应RAM限制。这是一个非常好的解决方案,因为它减少了游标迭代的瓶颈,并且不会因为你不断删除批次而占用太多ram。