在mongodb游标上迭代python中的n个文档

时间:2019-07-17 10:03:19

标签: python mongodb

我想在python中加载mongoDB集合,但是文档数接近300k,而当我尝试加载整个数据时会抛出内存错误

我正在尝试批量使用循环和负载收集。例如1万个批次等。

使用下面的循环,我能够加载单个文档,如果我们可以为每个10k文档遍历游标,谁能帮助我。请指教

cursor1= db.Data.find()
appendeddata = []

for record in cursor1:
    appendeddata.append(record)

df=pd.DataFrame(appendeddata)    

我找到了一种解决方案,下面的代码工作正常。还有其他有效的方法吗?请指教。

from pymongo import MongoClient
import pandas as pd

client = MongoClient(port=27017)
db = client["Database"]


chunksize = 200
count=db.Data.find().count()

skips_variable = range(0, db.Data.find().count(), int(chunksize))

append=[]
for i in range(1,len(skips_variable)):
    append.append(pd.DataFrame(db.Data.find()[skips_variable[i-1]:skips_variable[i]]))

if(skips_variable[i]<count):
    append.append(pd.DataFrame(db.Data.find()[skips_variable[i]:count]))

df = pd.concat(append)

0 个答案:

没有答案