Usando a Biblioteca do PHP para o MongoDB (PHPLIB)

Após a configuração inicial da extensão, continuaremos explicando como começar a usar a biblioteca correspondente no nível do usuário para escrever nosso primeiro projeto.

Instalando a Biblioteca do PHP com o Composer

A última coisa que ainda precisamos instalar para começar a usar o aplicativo em si é a biblioteca PHP.

A biblioteca precisa ser instalada com o » Composer, um gerenciador de pacotes para PHP. Instruções para instalar o Composer em diversas plataformas podem ser encontradas em seu site.

Instale a biblioteca executando:

$ composer require mongodb/mongodb

O resultado será algo como:

./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing mongodb/mongodb (1.0.0)
    Downloading: 100%

Writing lock file
Generating autoload files

O Composer criará vários arquivos: composer.json, composer.lock e um diretório vendor que conterá a biblioteca e quaisquer outras dependências do seu projeto pode exigir.

Usando a Biblioteca do PHP

Além de gerenciar suas dependências, o Composer também fornecerá um carregador automático (para as classes dessas dependências). Certifique-se de que ele esteja incluído no início do seu script ou no código de inicialização da sua aplicação:

<?php
// Este caminho deve apontar para o carregador automático do Composer
require 'vendor/autoload.php';

Com isto feito, agora você pode usar qualquer funcionalidade descrita na » documentação da biblioteca.

Se você usou drivers MongoDB em outras linguagens, a API da biblioteca deverá parecer familiar. Ele contém uma classe » Client para conexão com o MongoDB, uma classe » Database para operações em nível de banco de dados (por exemplo, comandos, gerenciamento de coleção) e uma classe » Collection para operações em nível de coleção (por exemplo, métodos » CRUD, gerenciamento de índice).

Por exemplo, é assim que você insere um documento na coleção beers do banco de dados demo:

<?php
require 'vendor/autoload.php'; // inclui o auto-carregador do Composer

$client = new MongoDB\Client("mongodb://localhost:27017");
$collection = $client->demo->beers;

$result = $collection->insertOne( [ 'name' => 'Hinterland', 'brewery' => 'BrewDog' ] );

echo "Inserido com ID do Objeto '{$result->getInsertedId()}'";
?>

Como o documento inserido não continha um campo _id, a extensão irá gerar um MongoDB\BSON\ObjectId para o servidor usar como _id. Este valor também é disponibilizado ao chamador por meio do objeto de resultado retornado pelo método insertOne.

Após a inserção, você pode consultar os dados que acabou de inserir. Para isso, você usa o método find, que retorna um cursor iterável:

<?php
require 'vendor/autoload.php'; // inclui o auto-carregador do Composer

$client = new MongoDB\Client("mongodb://localhost:27017");
$collection = $client->demo->beers;

$result = $collection->find( [ 'name' => 'Hinterland', 'brewery' => 'BrewDog' ] );

foreach ($result as $entry) {
    echo $entry['_id'], ': ', $entry['name'], "\n";
}
?>

Embora possa não ser aparente nos exemplos, os documentos e arrays do BSON são desserializados como classes especiais na biblioteca por padrão. Essas classes estendem ArrayObject para usabilidade e implementam as interfaces MongoDB\BSON\Serializable e MongoDB\BSON\Unserializable da extensão para garantir que os valores preservem seu tipo quando serializados de volta para BSON. Isso evita uma ressalva na extensão mongo legada, onde arrays podem se transformar em documentos e vice-versa. Consulte a especificação Dados Persistentes para obter mais informações sobre como os valores são convertidos entre PHP e BSON.