2013-01-15 68 views
6

我看過http://api.mongodb.org/perl/current/MongoDB/Examples.html,似乎只有mongoDB在Perl上的文檔。如何在perl中從mongoDB獲取我的查詢結果。讓我們說哈希。到目前爲止,我已成功連接到數據庫。我設法插入到集合中。現在我該如何發出select查詢並將其返回的數據轉換爲散列或類似的東西?如何在Perl中從mongoDB獲取返回的數據?

更新:

Example of my data 
{ 
"_id" : ObjectId("asdhgajsdghajgh"), 
"country" : "USA" 
"city" : "Boston" 
} 

{ 
"_id" : ObjectId("asdhgajsdghajgh"), 
"country" : "USA" 
"city" : "Seattle" 
} 

{ 
"_id" : ObjectId("asdhgajsdghajgh"), 
"country" : "Canada" 
"city" : "Calgary" 
} 

My code 

my $cursor = $my_collection 
    ->find({ country => 1 }) 
    ; 
while (my $row = $cursor->next) { 
    print "$row\n"; 
} 

此代碼不產生任何輸出。 我想要基本遍歷整個集合並按文檔讀取文檔。 不知道我在做什麼錯。我使用了上面的代碼。我改變$ cur->旁邊的光標 - >下我猜測這是一個錯字。我非常感謝迄今爲止所有的答案。

+1

上api.mongodb.org的東西出來的日期。你應該看看CPAN。我更新了[api.mongodb.org](http://api.mongodb.org/)上的Perl鏈接以指向那裏。 – friedo

回答

10

這不是官方文檔。頭右側的CPAN:

迭代結果是非常相似的DBI方式:

use Data::Printer; 
use MongoDB; 

# no query is performed on initialization! 
my $cursor = $collection 
    ->find({ active => 1, country => 'Canada' }) # filter "active" records from Canada 
    ->sort({ stamp => -1 }) # order by "stamp" attribute, desc. 
    ->limit(1000);   # first 1000 records 

# query & iterate 
while (my $row = $cur->next) { 
    # it is 'p', from Data::Printer! 
    p $row; 
} 
+0

感謝您的回覆。我閱讀了上面的一些文檔,它幫助我理解了如何獲得像我的$ some_users = $ users-> find({「name」=>「Joe」})的結果。這個例子沒有解釋find()返回數百萬個結果時會發生什麼?我如何迭代這些結果? – DoodleKana

+0

對不起,添加了迭代器的例子! – creaktive

+0

感謝你們的答案。我再次更新了我的問題。你們可以檢查一下,看看爲什麼我的代碼不會導致任何輸出。我猜這是一個非常簡單的noob錯誤。 – DoodleKana

相關問題