/ Tecnologia / Integração do … / 6.3 PHP

6.3 PHP

MongoDB

Edição e execução do script titulos_repetidos.php no ambiente de desenvolvimento Geany
Edição e execução do script titulos_repetidos.php no ambiente de desenvolvimento Geany

Para acessar o MongoDB pelo PHP, foi instalada a extensão php-mongodb através do comando:

sudo apt install php-mongodb

Para testar o acesso ao MongoDB pelo PHP, foi criado um script que realiza a mesma consulta do item 5.3 , ou seja, exibe os títulos repetidos dos documentos, ordenados por quantidade e título.

<?php
/**
 * @file
 * Exibir os títulos repetidos dos documentos,
 * ordenados pelo número de vezes que aparecem
 * e título.
 *
 * @author Reficio
 */

// Estabelecer a conexão com o MongoDB
$conn = new MongoDB\Driver\Manager("mongodb://localhost:27017");

// Utilizar a agregação para contar o número de vezes
// que cada título aparece na coleção.
// _id é o campo usado para agrupar a coleção.
// Mostrar só os títulos repetidos, ou seja,
// aqueles que aparecem mais de uma vez.
$comando = new MongoDB\Driver\Command( [
    'aggregate' => 'pages',
    'pipeline' => [
        [ '$group' => [ '_id' => '$title', 'contador' => ['$sum' => 1] ] ],
        [ '$match' => [ 'contador' => [ '$gt' => 1 ] ] ],
        [ '$sort'  => [ 'contador' => 1, '_id' => 1] ],
    ],
    'cursor' => new stdClass,
] );

// Executar o comando criando um cursor para o resultado
$cursor = $conn->executeCommand('reficio', $comando);

// Mostrar o resultado
foreach ($cursor as $documento) {
    $doc = get_object_vars($documento);
    echo $doc["_id"] . "; " . $doc["contador"] . "<br />\n";
}
?>

O resultado da execução da página está mostrado abaixo:

6.1 Python; 2
6.2 Ruby; 2
6.3 PHP; 2
6.4 C; 2
Avenida Central; 2
Casa da Ópera; 2
Chafariz da Praça Quinze de Novembro; 2
Chafariz da Praça São Salvador; 2
Chafariz das Saracuras; 2
Cidade Nova; 2
Copacabana; 2
Igreja de São Francisco de Paula; 2
Igrejinha de Copacabana; 2
Morro da Viúva; 2
Ouro Preto; 2
Santa Luzia; 2
São Cristóvão; 2
São Roque; 2
São Sebastião; 2
Chafariz das Marrecas; 3
Quinta da Boa Vista; 3
Floresta da Tijuca; 4
Largo da Carioca; 4
Canal do Mangue; 5
Passeio Público; 5
Jardim Botânico do Rio de Janeiro; 7