1. 程式人生 > >python中使用collection.find()在mongodb中查詢大量資料時的問題

python中使用collection.find()在mongodb中查詢大量資料時的問題

問題描述:

假設collection中有2000條資料,執行如下程式碼:

i=1
for content in collection.find():
    print i++

列印到101時,列印停止,等待若干秒後繼續列印完全。

分析:

mongodb的find()方法返回遊標cursor,這裡有一個限制,預設包含101個文件。官方文件。

解決方案:

1.設定batch size:

i=1
for content in collection.find().batch_size(500):
    print i++

不建議設太大,設定太大的話,會在列印之前話費大量時間讀取cursor。所以建議設定適量的值,讀取一些cursor,列印一些資料。

2.將cursor轉化為list:

result = collection.find()
result_list = list(result[:])
i=1
for document in result_list
    print i++

python不像php有toArray()方法將結果集轉化為陣列一次性讀取,可以轉化成列表 , 將資料放在RAM中,但是轉化的過程一樣要耗時。