Visão geral
Neste guia, você pode aprender como usar a Biblioteca MongoDB PHP para recuperar dados de uma coleção MongoDB usando operações de leitura. Você pode chamar o método MongoDB\Collection::find() ou MongoDB\Collection::findOne() em uma coleção para recuperar documentos que correspondam a um conjunto de critérios.
Dados de amostra
Os exemplos neste guia usam a collection companies no banco de dados sample_training dos conjuntos de banco de dados de amostra do Atlas. Para acessar essa coleção a partir do seu aplicação PHP , instancie um MongoDB\Client que se conecte a um Atlas cluster e atribua o seguinte valor à sua variável $collection :
$collection = $client->sample_training->companies;
Para aprender como criar uma implantação gratuita do MongoDB e carregar os conjuntos de dados de amostra, consulte o Guia de introdução do MongoDB.
Encontrar documentos
A biblioteca PHP do MongoDB inclui dois métodos para recuperar documentos de uma collection: MongoDB\Collection::findOne() e MongoDB\Collection::find(). Esses métodos usam um filtro de query e retornam um ou mais documentos correspondentes. Um filtro de query especifica os critérios de pesquisa que o driver usa para recuperar documentos em sua query.
Dica
Para saber mais sobre filtros de query, consulte o guia Especificar uma query .
Encontrar um documento
Para localizar um único documento em uma coleção, chame o método MongoDB\Collection::findOne() e passe um filtro de query que especifique os critérios do documento que você deseja localizar.
O método findOne() retorna um valor array, object ou null . Se o filtro de query corresponder a um documento, o método retornará uma instância array|object contendo o documento. O tipo de retorno depende do valor da opção typeMap . Se o filtro de query não corresponder a nenhum documento, o método retornará null.
Dica
Para saber mais sobre as opções findOne() , como typeMap, consulte a seção Modificar comportamento de localização deste guia.
Se o filtro de query corresponder a mais de um documento, o método findOne() retornará o primeiro documento correspondente dos resultados recuperados.
O exemplo a seguir usa o método findOne() para localizar o primeiro documento no qual o campo name tem o valor 'LinkedIn':
$document = $collection->findOne(['name' => 'LinkedIn']); echo json_encode($document), PHP_EOL;
{"_id":{"$oid":"..."},"name":"LinkedIn","permalink":"linkedin","crunchbase_url": "http:\/\/www.crunchbase.com\/company\/linkedin","homepage_url":"http:\/\/linkedin.com", ... }
Dica
Ordem de classificação
O método findOne() retorna o primeiro documento em ordem natural no disco se nenhum critério de classificação for especificado.
Localizar vários documentos
Para encontrar vários documentos em uma coleção, passe um filtro de queries para o método MongoDB\Collection::find() que especifica os critérios dos documentos que você deseja recuperar.
O exemplo a seguir usa o método find() para localizar todos os documentos nos quais o campo founded_year tem o valor 1970:
$results = $collection->find(['founded_year' => 1970]);
O método find() retorna uma instância de MongoDB\Driver\Cursor, que você pode iterar para ver os documentos correspondentes. Um cursor é um mecanismo que permite que um aplicação itere sobre os resultados do banco de dados de dados enquanto mantém apenas um subconjunto deles na memória em determinado momento. Os cursores são úteis quando o método find() retorna uma grande quantidade de documentos.
Você pode iterar sobre os documentos em um cursor usando um loop foreach , como mostrado no exemplo a seguir:
foreach ($results as $doc) { echo json_encode($doc), PHP_EOL; }
{"_id":{"$oid":"..."},"name":"Mitsubishi Motors","permalink":"mitsubishi-motors", "crunchbase_url":"http:\/\/www.crunchbase.com\/company\/mitsubishi-motors", ... } {"_id":{"$oid":"..."},"name":"Western Digital","permalink":"western-digital", "crunchbase_url":"http:\/\/www.crunchbase.com\/company\/western-digital", ... } {"_id":{"$oid":"..."},"name":"Celarayn","permalink":"celarayn","crunchbase_url": "http:\/\/www.crunchbase.com\/company\/celarayn", ... }
Observação
Localizar todos os documentos
Para encontrar todos os documentos em uma coleção, passe um filtro vazio para o método find() :
$cursor = $collection->find([]);
Modificar comportamento de localização
Você pode modificar o comportamento dos métodos MongoDB\Collection::find() e MongoDB\Collection::findOne() passando uma array que especifique valores de opção como um parâmetro. A tabela a seguir descreve algumas opções que você pode definir na array:
Opção | Descrição |
|---|---|
| O número máximo de documentos dentro de cada lote retornados em um resultado de query. Por padrão, o |
| O agrupamento a ser usado para a operação. O valor padrão é o agrupamento especificado para a coleção. Para saber mais, consulte a seção Agrupamento desta página. |
| O comentário a ser anexado à operação. |
| O tipo de cursor a ser usado para a operação. O valor padrão |
| O número máximo de documentos que a operação pode retornar. |
| O número de documentos a ignorar antes de retornar os resultados. |
| A ordem em que a operação retorna documentos correspondentes. |
| O mapa de tipo a aplicar aos cursores, que determina como os documentos BSON são convertidos em valores PHP. O valor padrão é o mapa do tipo da coleção. |
O exemplo a seguir usa o método find() para localizar todos os documentos nos quais o campo number_of_employees tem o valor 1000. O exemplo utiliza a opção limit para retornar um máximo de 5 resultados:
$results = $collection->find( ['number_of_employees' => 1000], ['limit' => 5], ); foreach ($results as $doc) { echo json_encode($doc), PHP_EOL; }
Para obter uma lista completa de opções, consulte a documentação da API para os parâmetros findOne() e find() .
Agrupamentos
Para especificar um agrupamento para sua operação, passe um parâmetro de array $options que defina a opção collation para o método de operação. Atribua a opção collation a uma array que configure as regras de agrupamento.
A tabela a seguir descreve os campos que você pode definir para configurar o agrupamento:
Campo | Descrição |
|---|---|
| (Obrigatório) Especifica a locale { components internacionais para Unicode} (ICU). Para obter uma lista de localidades suportadas, consulte Localidades de Agrupamento e Parâmetros Padrão no manual do MongoDB Server . |
| (Opcional) Especifica se incluir comparação de caso. |
| (Opcional) Especifica a ordem de classificação das diferenças de caso durante as comparações de nível terciário. |
| (Opcional) Especifica o nível de comparação a ser executado, conforme definido na documentação da ICU. |
| (Opcional) Especifica se o driver compara strings numéricas como números. |
| (Opcional) Especifica se a biblioteca considera o espaço em branco e a pontuação como caracteres básicos para fins de comparação. |
| (Opcional) Especifica quais caracteres a biblioteca considera ignoráveis quando o |
| (Opcional) Especifica se as strings contendo diacríticos são classificadas da parte de trás da string para a frente. |
Para saber mais sobre agrupamento e os possíveis valores para cada campo, consulte a entrada de Agrupamento no manual do MongoDB Server.
Informações adicionais
Para saber mais sobre filtros de query, consulte o guia Especificar uma query .
Documentação da API
Para saber mais sobre qualquer um dos métodos discutidos nesta guia, consulte a seguinte documentação da API: