Javascript
As Queries de Map Reduce no MongoDB são escritas em javascript. Tudo que você tem a fazer é preparar duas funções javascript
2 |
|
Na função de mapa que você tem que emitir uma chave para os valores do documento, por exemplo. para cada documento geradas URLs e contados.
1 |
|
Na função de redução simplesmente vamos reunir os resultados e resumi-los. É mais fácil pensar que reduzir é algo como dobrar ou injetar (dependendo do plano) sobre os valores da função de mapeamento emitidos.
Execução de scripts
O MongoDB tem uma interface muito legal para a execução de scripts. Vamos examinar um exemplo simples.
1 |
|
Isto irá executar o script “generate_report.js” no banco de dados“canis_production” no nó localhost: 27017. Você não precisa fazer isso, mas é bom para certificar-se que irá escrevê-la em arquivo, em seguida, digite cada uma das funções.
Exemplo da Query Map Reduce
Este é um MapReduce simples. Ele está emitindo para cada campo url do documento e valor 1. O Redutor está adicionando valores para a mesma chave para que desta forma poderemos saber quantas ocorrências de cada url temos em toda coleção.
1 |
|
Agora definimos a saida dos resultados da Query Map Reduce e tudo que precisamos fazer é executar a Query.
1 |
|
Para executar o MapReduce estamos usando a função MapReduce na Collection (este exemplo usa a collection denominada “sites”), o primeiro argumento é a função mapa, o segundo é reduzir a função e o terceiro é opção, mas muito útil, que é a coleta de saída onde os resultados serão armazenados em forma de documentos. Esta opção permite-nos executar a consulta no inicio da noite e ver os resultados na manhã seguinte.
Vamos Testá-lo
Primeiro alguns dados de amostra
> db.sites.insert({url: "www.google.com", date: new Date(), trash_data: 5 });
> db.sites.insert({url: "www.mongodbwize.wordpress.com", date: new Date(), trash_data: 13 });
> db.sites.insert({url: "www.google.com", date: new Date(), trash_data: 1 });
> db.sites.insert({url: "www.mongodbwize.wordpress.com", date: new Date(), trash_data: 69 });
> db.sites.insert({url: "www.mongodbwize.wordpress.com", date: new Date(), trash_data: 256 });
Agora Funções e Consultas
1 |
|
Resultados
1 |
|
Mais informações em => http://www.mongodb.org/display/DOCS/MapReduce
0 comentários:
Postar um comentário