3

このコードを使用して特定のテキストをデータベースに検索し、mojolicious でページにロードします。この方法は適切ですか、それともどれくらい速いですか?

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

1 に答える 1

0

distinctコマンドは確かに機能します (そして、機能しているようです)。これは、おそらくこれを行う最速の方法でもあります (実装では、適切なインデックスを開き、そこから読み取り、ハッシュ テーブル (IIRC) にデータを入力するだけです)。

ただし、個別の値の合計サイズが BSON サイズ制限 (現在 16MB) を超えている場合、エラーで失敗することに注意してください。

これに遭遇した場合は、より遅い代替手段に頼る必要があります。たとえば、MapReduce。

于 2012-06-10T09:12:55.623 に答える