2013-01-15 15 views
6

私はhttp://api.mongodb.org/perl/current/MongoDB/Examples.htmlを読んでいて、PerlのmongoDBからのドキュメンテーションのようです。 PerlでmongoDBからクエリ結果を取得するにはどうしたらいいですか?私たちはハッシュに言いましょう。私はこれまでdbに接続できました。私はコレクションに挿入を行うことができました。今、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-> nextを$ cursor-> nextに変更しました。それは誤っていると推測しています。これまでのすべての答えに感謝します。

+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

あなたの答えをおねえてくれてありがとう。私は再び質問を更新しました。あなたは私のコードが結果をもたらさない理由をチェックして見ることができますか?私はそれが非常に単純なノブの間違いであると推測しています。 – DoodleKana

関連する問題