2013-01-15 3 views
6

나는 http://api.mongodb.org/perl/current/MongoDB/Examples.html을 읽고 펄의 mongoDB에서만 문서화 된 것으로 보인다. Perl에서 mongoDB의 질의 결과를 얻으려면 어떻게해야합니까? 해시에 대해 이야기합시다. 지금까지 DB에 성공적으로 연결되었습니다. 컬렉션에 삽입 작업을 관리했습니다. 이제 select 쿼리를 실행하고 반환 된 데이터를 해시 또는 비슷한 것으로 가져 오는 방법은 무엇입니까?mongoDB에서 Perl로 반환 된 데이터를 가져 오는 방법은 무엇입니까?

업데이트 :

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"; 
} 

이 코드는 출력을 생성하지 않습니다. 기본적으로 전체 컬렉션을 반복하고 문서별로 문서를 읽길 원합니다. 내가 뭘 잘못하고 있는지 잘 모르겠다. 위의 코드를 사용했습니다. 나는 $ cursor-> next를 $ cursor-> next로 바 꾸었습니다. 다음은 오타라고 추측합니다. 지금까지 모든 대답에 감사드립니다.

+1

api.mongodb.org에 물건 부족 :

결과들을 반복은 DBI 방법 꽤 유사하다 날짜. 당신은 CPAN을 봐야합니다. 나는 [api.mongodb.org] (http://api.mongodb.org/)의 Perl 링크를 가리켜 그곳을 가리 키도록 업데이트했다. – friedo

답변

10

공식 문서가 아닙니다. 바로 CPAN에 머리 :

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

관련 문제