我正在使用pymongo在一个查询中获取大约2M个文档,每个文档只包含三个字符串字段.查询只是一个简单的find(),没有任何limit()或batchSize().
在迭代光标时,我注意到脚本在处理大约25k文档后等待大约30~40秒.
所以我想知道mongo会在一批中返回所有2M结果吗?pymongo中的默认batchSize()是什么?
Joh*_*one 21
MongoDB中的游标默认返回最多101个文档或足以让你达到1 MB.在弹出到4MB后,调用通过光标进行迭代.返回的文档数量取决于文档的大小:
光标批次
MongoDB服务器批量返回查询结果.批量大小不会超过最大BSON文档大小.对于大多数查询,第一批返回101个文档或只有足够的文档超过1兆字节.后续批量大小为4兆字节.要覆盖批处理的默认大小,请参阅batchSize()和limit().
对于包含没有索引的排序操作的查询,服务器必须加载内存中的所有文档以执行排序,并将返回第一批中的所有文档.
当您遍历游标并到达返回批处理的末尾时,如果有更多结果,cursor.next()将执行getmore操作以检索下一批.
http://docs.mongodb.org/manual/core/cursors/
您可以在光标上使用pymongo中的batch_size()方法覆盖默认值 - 但是它不会超过16 MB(最大BSON文档大小):
batch_size时(batch_size时)
限制一批中返回的文档数量.每批需要往返服务器.可以对其进行调整以优化性能并限制数据传输.
注意
batch_size不能覆盖MongoDB对单个批次返回客户端的数据量的内部限制(即如果将批量大小设置为1,000,000,000,MongoDB目前每批只返回4-16MB的结果).
如果batch_size不是整数,则引发TypeError.如果batch_size小于0,则引发ValueError.如果已使用此Cursor,则引发InvalidOperation.应用于此游标的最后一个batch_size优先.参数:
batch_size:请求的每批结果的大小.
http://api.mongodb.org/python/current/api/pymongo/cursor.html
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           17379 次  |  
        
|   最近记录:  |