2012-06-09 3 views
3

이 코드를 사용하여 특정 텍스트를 데이터베이스에 저장하면 mojolicious 페이지로로드됩니다.이 방법이 좋습니까, 얼마나 빠릅니까?MongoDB 고유 값

use MongoDB; 
    use Data::Dump q(dump); 
     my $connection = MongoDB::Connection->new(host => 'localhost', port => 27017); 
     my $database = $connection->test; 
    my $col = $database->user; 

    my $r3 = $database->run_command([ 
     "distinct" => "person", 
     "key"  => "text", 
     "query" =>"" 
    ]); 


    for my $d (@{ $r3->{values} }) { 
    if ($d=~ /value/){ 
     print "D: $d\n"; 
    } 
    } 
+2

작동하고 필요에 따라 충분히 빠르면 사용하십시오. 나중에 최적화 할 수 있습니다. –

답변

0

distinct 명령은 확실하게 작업 할 수 있습니다 (그리고 않는 것 같다), 그래서 좋다. 아마 이것을 수행하는 가장 빠른 방법 일 수도 있습니다. 구현은 적절한 색인을 열고, 그것으로부터 읽고 해시 테이블 인 IIRC를 채 웁니다.

그러나 고유 값의 총 크기가 BSON 크기 제한 (현재 16MB)보다 큰 경우 오류가 발생하여 오류가 발생합니다.

이 문제가 발생하면 느린 대체 방법을 사용해야합니다. 예를 들어 MapReduce.