【发布时间】:2016-09-27 07:46:29
【问题描述】:
我遇到的困难比我想象的要从 Mongo 批量导入多个文档到 RAM 中要困难得多。我正在编写一个应用程序来通过pymongo 与 MongoDB 通信,该应用程序当前有 2GB,但在不久的将来可能会增长到超过 1TB。因此,一次将有限数量的记录批量读取到 RAM 中对于可扩展性很重要。
基于this post 和this documentation,我认为这很简单:
HOST = MongoClient(MONGO_CONN)
DB_CONN = HOST.database_name
collection = DB_CONN.collection_name
cursor = collection.find()
cursor.batch_size(1000)
next_1K_records_in_RAM = cursor.next()
但是,这对我不起作用。即使我有一个包含> 200K BSON对象的Mongo集合,这也会一次将它们作为单个字典读取,例如{_id : ID1, ...} 而不是我要查找的内容,这是表示我的集合中多个文档的字典的错误,例如[{_id : ID1, ...}, {_id : ID2, ...}, ..., {_id: ID1000, ...}]。
我不认为这很重要,但我使用的是 python 3.5 而不是 2.7。
由于此示例引用了一个安全的远程数据源,因此这不是一个可重现的示例。对此表示歉意。如果您对如何改进问题有任何建议,请告诉我。
【问题讨论】:
标签: python mongodb python-3.x pymongo