Especifique documentos a serem devolvidos
Nesta página
Visão geral
Neste guia, você pode aprender como especificar quais documentos e quais tipos retornar de uma operação de leitura passando as seguintes opções para o método MongoDB\Collection::find()
ou MongoDB\Collection::findOne()
:
limite: especifica o número máximo de documentos para retornar de uma consulta
classificar: especifica a ordem de classificação para os documentos devolvidos
skip: especifica o número de documentos a ignorar antes de retornar os resultados da query
typeMap: Converte os documentos retornados para um tipo de dados especificado
Dados de amostra
Os exemplos neste guia usam a collection restaurants
no banco de dados sample_restaurants
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_restaurants->restaurants;
Para saber como criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o guia Iniciar com Atlas .
Limite
Para especificar o número máximo de documentos retornados de uma operação de leitura, crie uma array que defina a opção limit
e passe a array como parâmetro para o método MongoDB\Collection::find()
.
O exemplo a seguir encontra todos os restaurantes que têm um cuisine
valor de campo de 'Italian'
e limita os resultados a 5
documentos:
$cursor = $collection->find( ['cuisine' => 'Italian'], ['limit' => 5] ); foreach ($cursor as $doc) { echo json_encode($doc), PHP_EOL; }
{"_id":{"$oid":"..."},...,"name":"Isle Of Capri Resturant","restaurant_id":"40364373"} {"_id":{"$oid":"..."},...,"name":"Marchis Restaurant","restaurant_id":"40364668"} {"_id":{"$oid":"..."},...,"name":"Crystal Room","restaurant_id":"40365013"} {"_id":{"$oid":"..."},...,"name":"Forlinis Restaurant","restaurant_id":"40365098"} {"_id":{"$oid":"..."},...,"name":"Angelo Of Mulberry St.","restaurant_id":"40365293"}
Dica
O exemplo anterior retorna os cinco primeiros documentos correspondidos pela query de acordo com sua ordem natural no banco de banco de dados. A seção a seguir descreve como devolver os documentos em uma ordem especificada.
Sort
Para retornar documentos em uma ordem especificada, crie uma array que defina a opção sort
. Ao definir esta opção, inclua o campo para classificar os resultados e a direção de classificação. Um valor de 1
classifica os valores do mais baixo para o mais alto, e um valor de -1
os classifica do mais alto para o mais baixo. Em seguida, passe a array como um parâmetro para o método MongoDB\Collection::find()
ou MongoDB\Collection::findOne()
.
O exemplo a seguir retorna todos os documentos que têm 'Italian'
cuisine
de , classificados em ordem crescente de name
campo :
$cursor = $collection->find( ['cuisine' => 'Italian'], ['sort' => ['name' => 1]] ); foreach ($cursor as $doc) { echo json_encode($doc), PHP_EOL; }
{"_id":{"$oid":"..."},...,"name":"44 Sw Ristorante & Bar","restaurant_id":"40698807"} {"_id":{"$oid":"..."},...,"name":"900 Park","restaurant_id":"41707964"} {"_id":{"$oid":"..."},...,"name":"A Voce","restaurant_id":"41434084"} ... {"_id":{"$oid":"..."},...,"name":"Zucchero E Pomodori","restaurant_id":"41189590" }
Ignorar
Para ignorar um número especificado de documentos antes de retornar os resultados da query, crie uma array que defina a opção skip
e passe a array como um parâmetro para o método MongoDB\Collection::find()
ou MongoDB\Collection::findOne()
.
O exemplo a seguir retorna todos os documentos que têm um valor de campo borough
de 'Manhattan'
e ignora os primeiros 10
documentos:
$cursor = $collection->find( ['borough' => 'Manhattan'], ['skip' => 10] ); foreach ($cursor as $doc) { echo json_encode($doc), PHP_EOL; }
{"_id":{"$oid":"..."},...,"name":"Cafe Metro","restaurant_id":"40363298"} {"_id":{"$oid":"..."},...,"name":"Lexler Deli","restaurant_id":"40363426"} {"_id":{"$oid":"..."},...,"name":"Domino'S Pizza","restaurant_id":"40363644"} ...
Combinar Limite, Classificar e Ignorar
Você pode definir as opções limit
, sort
e skip
em uma única array de opções e passar a array como parâmetro para a operação de leitura. Isso permite que você defina um número máximo de documentos classificados para retornar, ignorando um número específico de documentos antes de retornar.
O exemplo a seguir retorna 5
documentos com um valor cuisine
de 'Italian'
. Os resultados são classificados em ordem crescente por valor de campo name
, ignorando os primeiros 10
documentos:
$options = [ 'sort' => ['name' => 1], 'limit' => 5, 'skip' => 10, ]; $cursor = $collection->find(['cuisine' => 'Italian'], $options); foreach ($cursor as $doc) { echo json_encode($doc), PHP_EOL; }
{"_id":{"$oid":"..."},...,"name":"Acqua","restaurant_id":"40871070"} {"_id":{"$oid":"..."},...,"name":"Acqua Restaurant","restaurant_id":"41591488"} {"_id":{"$oid":"..."},...,"name":"Acqua Santa","restaurant_id":"40735858"} {"_id":{"$oid":"..."},...,"name":"Acquista Trattoria","restaurant_id":"40813992"} {"_id":{"$oid":"..."},...,"name":"Acquolina Catering","restaurant_id":"41381423"}
Observação
A ordem em que você chama esses métodos não altera os documentos que são devolvidos. A Biblioteca PHP do MongoDB reordena automaticamente as chamadas para executar primeiro a operação de classificação, a operação de ignorar em seguida e, em seguida, a operação de limite.
Especificar tipo de devolução
Para personalizar o tipo de dados de documentos retornados por uma operação de leitura, você pode passar a opção typeMap
em um parâmetro de array.
Por padrão, os métodos chamados em uma instância MongoDB\Client
, MongoDB\Database
ou MongoDB\Collection
utilizam o seguinte mapa de tipo:
[ 'array' => 'MongoDB\Model\BSONArray', 'document' => 'MongoDB\Model\BSONDocument', 'root' => 'MongoDB\Model\BSONDocument', ]
Este mapa de tipo padrão executa as seguintes conversões:
Arrays para
MongoDB\Model\BSONArray
objetosDocumentos BSON incorporados e de nível superior em objetos
MongoDB\Model\BSONDocument
Em um mapa de tipo personalizado, você pode especificar conversões para qualquer tipo que implemente MongoDB\BSON\Unserializable
, bem como os tipos array
, stdClass
e object
.
Exemplo
O exemplo a seguir retorna todos os documentos que têm um valor de e especifica a opção cuisine
typeMap
'Hawaiian'
converter os documentos em valores de array:
$options = [ 'typeMap' => [ 'root' => 'array', 'document' => 'array' ] ]; $cursor = $collection->find(['cuisine' => 'Hawaiian'], $options); foreach ($cursor as $doc) { print_r($doc) . PHP_EOL; }
Array ( [_id] => MongoDB\BSON\ObjectId Object ( [oid] => ... ) [address] => Array ( ... ) [borough] => Manhattan [cuisine] => Hawaiian [grades] => Array ( ... ) [name] => Makana [restaurant_id] => 41509012 ) ...
Informações adicionais
Para obter mais informações sobre a recuperação de documentos, consulte o guia Recuperar dados .
Para obter mais informações sobre como especificar uma query, consulte o guia Especificar uma query .
Documentação da API
Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API: