我遇到的困难时间比我想要将Mongo中的多个文档批量导入RAM要困难得多。我正在编写一个应用程序,通过目前有2GB的pymongo
与MongoDB进行通信,但在不久的将来可能会增长到超过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。
由于此示例引用了安全的远程数据源,因此这不是可重现的示例。为此道歉。如果您对如何改进问题有任何建议,请告诉我。
答案 0 :(得分:1)
检查退回的文件 必须迭代光标,即
For document in cursor:
print (document)
或者如果您需要文档列表:list(cursor)
cursor.rewind()