2013-10-08 41 views
1

我用perl腳本作爲客戶端來查詢的MongoDB databases.my代碼如下:調用mongoDB的perl find()函數時,lazy-load的含義是什麼?

my $some_users = $users->find({"name" => "Joe"}); 
while (my $doc = $all_users->next) { 
     print $doc->{'name'}."\n"; 
    } 

CPAN教程說:

find returns a MongoDB::Cursor, which can be iterated over. It lazily loads results from the database. 

是的,我仔細觀察之後,我發現它調用find()需要很短的時間,相反,如果find()函數返回很多數據,MongoDB :: Cursor的迭代將花費很長時間。所以,我變得非常困惑,這是什麼意思呢,延遲加載?懶加載意味着「無所事事」?懶加載意味着作弊?

+1

這只是作弊,如果你被抓住。 – friedo

回答

1

延遲加載意味着返回一個迭代器而不是整個數據。

所以在循環:

這不返回,並存儲在$ some_users完整的數據,只是一個參考/迭代查詢相匹配的數據。

my $some_users = $users->find({"name" => "Joe"}); 

現在你可以遍歷,使用迭代器的數據,該記錄由在環Perl的MongoDB的驅動程序獲取,它可以獲取它們一個接一個,或預取批次的發言權1000條記錄,然後在1000之後重新讀取,這取決於驅動程序的實現。

 while (my $doc = $all_users->next) { 
      print $doc->{'name'}."\n"; 
     } 
相關問題