【问题标题】:Mongodb bulk insert limit in PythonPython中的MongoDB批量插入限制
【发布时间】:2013-05-21 03:22:54
【问题描述】:

PyMongo 可以批量插入的文档数量是否有限制?我指的不是 MongoDB 文档大小的 16mb 限制,而是我希望通过 Python 批量插入的文档列表的实际大小。

【问题讨论】:

    标签: python mongodb pymongo bulkinsert


    【解决方案1】:

    通过 pymongo 批量插入的文档的 数量 没有限制。根据docs,你可以给collection.insert提供一个iterable,它会

    insert each document in the iterable, sending only a single command to the server
    

    这里的关键点是 pymongo 将尝试通过向 mongodb 服务器发送一个 message 来完成您的插入操作。

    Mongodb 本身有一个消息大小限制 (maxMessageSizeBytes),即等于 48000000 字节 (maxBsonObjectSize * 3)。

    因此,pymongo 客户端驱动程序应该负责将您的大消息拆分为较小的消息,以适应 mongodb 最大大小限制。但是,实际上它还没有实施。见:

    目前,您必须自己处理这种情况。

    希望对您有所帮助。

    【讨论】:

    • 已添加此功能。如果您没有看到改进,请务必更新 pymongopip install --upgrade pymongo
    • 不幸的是,它仍然会在发送之前从您的迭代中获取所有文档,所以如果您有例如一个生成数百万个对象的生成器,它会将所有内容加载到内存中,然后以多个块的形式发送。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-26
    • 2013-11-07
    • 1970-01-01
    • 2013-07-12
    • 2017-10-05
    • 2013-05-19
    • 1970-01-01
    相关资源
    最近更新 更多