Python 如何使用Pymongo从游标插入many?

Python 如何使用Pymongo从游标插入many?,python,mongodb,cursor,pymongo,Python,Mongodb,Cursor,Pymongo,我对使用光标将数据库从一个mongod复制到另一个mongod感兴趣。我想限制发送的insert请求的数量,因此我不想在游标中单独插入每个文档,而是希望在每个游标批中插入许多文档 在pymongo/python中有这样做的方法吗 我曾尝试将光标转换为一个列表,然后调用insert_many,这是可行的,但如果集合超过我拥有的ram量,那么它将无法工作 任何关于如何从光标抓取一批并将其转换为列表的想法都将不胜感激 谢谢 我还不能发表评论,但我最近也遇到了同样的问题。我找到了很多解决方案,没有一个能

我对使用光标将数据库从一个mongod复制到另一个mongod感兴趣。我想限制发送的insert请求的数量,因此我不想在游标中单独插入每个文档,而是希望在每个游标批中插入许多文档

在pymongo/python中有这样做的方法吗

我曾尝试将光标转换为一个列表,然后调用insert_many,这是可行的,但如果集合超过我拥有的ram量,那么它将无法工作

任何关于如何从光标抓取一批并将其转换为列表的想法都将不胜感激


谢谢

我还不能发表评论,但我最近也遇到了同样的问题。我找到了很多解决方案,没有一个能满足我的具体情况


在您的例子中,它是否需要使用python/pymongo和游标?如果是这样的话,目前还没有办法做到这一点,但我花了大量的时间通过挖掘来确认,我认为我可以使用他们的一些较低级别的API来实现这一点。我会告诉你的。

我还不能评论,但我最近也遇到了同样的问题。我找到了很多解决方案,没有一个能满足我的具体情况

在您的例子中,它是否需要使用python/pymongo和游标?如果是这样的话,目前还没有办法做到这一点,但我花了大量的时间通过挖掘来确认,我认为我可以使用他们的一些较低级别的API来实现这一点。我会通知您的。

到目前为止,这是我的“切片/批处理”解决方案,它比从光标单独迭代每个文档更有效:

  • 记下您抓取的最后一份文档的id字段
  • 打开查询“大于上一张单据的_id”且限制为的游标 不管你的批量大小是多少
  • 现在,您应该有一个游标,其中包含批处理中所需数量的文档
  • 通过执行列表将此游标设置为python列表(游标)
  • 在此列表中插入\u许多
  • 更新上次抓取的内存,并删除列表以释放内存
您可以调整批大小以适应RAM限制。这是一个非常好的解决方案,因为它减少了游标迭代的瓶颈,并且不需要太多的ram,因为您在继续操作时不断删除批处理。

到目前为止,这是我的“切片/批处理”解决方案,它比从游标单独迭代每个文档更有效:

  • 记下您抓取的最后一份文档的id字段
  • 打开查询“大于上一张单据的_id”且限制为的游标 不管你的批量大小是多少
  • 现在,您应该有一个游标,其中包含批处理中所需数量的文档
  • 通过执行列表将此游标设置为python列表(游标)
  • 在此列表中插入\u许多
  • 更新上次抓取的内存,并删除列表以释放内存
您可以调整批大小以适应RAM限制。这是一个非常好的解决方案,因为它减少了游标迭代的瓶颈,并且不需要太多的ram,因为您在继续操作时会不断删除批处理