Retrieve Data
Nesta página
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 utilizam a coleção do companies
no banco de dados de dados do sample_training
a partir dos conjuntos 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 saber como criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o guia Iniciar com Atlas .
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 |
---|---|
| The number of documents to return per batch. The default value is 101 .Type: integer |
| The collation to use for the operation. The default value is the collation
specified for the collection. Type: array|object |
| The comment to attach to the operation. Type: any BSON type |
| The type of cursor to use for the operation. The default value is
MongoDB\Operation\Find::NON_TAILABLE .Type: MongoDB\Operation\Find |
| The maximum number of documents the operation can return. Type: integer |
| The number of documents to skip before returning results. Type: integer |
| The order in which the operation returns matching documents. Type: array|object |
| The type map to apply to cursors, which determines how BSON documents
are converted to PHP values. The default value is the collection's type map. Type: array |
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() .
Informações adicionais
Para saber mais sobre filtros de query, consulte o guia Especificar uma query .
Para visualizar exemplos de código de recuperação de documentos com a biblioteca PHP do MongoDB , consulte Ler dados do MongoDB.
Documentação da API
Para saber mais sobre qualquer um dos métodos discutidos nesta guia, consulte a seguinte documentação da API: