2012-06-09 4 views
3

J'utilise ce code pour trouver un texte spécifique dans la base de données, puis je chargerai dans la page avec mojolicious.Est-ce que cette méthode est bonne ou à quelle vitesse elle est?MongoDB Distinct Values ​​

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

Si cela fonctionne et est assez rapide pour vos besoins, utilisez-le. Vous pouvez optimiser plus tard. –

Répondre

0

commande distinct peut certainement travailler (et il semble qu'il fait), il est donc bon. C'est probablement aussi le moyen le plus rapide de le faire (l'implémentation ouvre juste l'index approprié, en lit le contenu et remplit la table de hachage, IIRC).

Notez, cependant, qu'il échouera avec une erreur si la taille totale des valeurs distinctes est supérieure à la limite de taille BSON (16 Mo actuellement).

Si jamais vous rencontrez ce problème, vous devrez recourir à des alternatives plus lentes. MapReduce, par exemple.