Menu Docs
Página inicial do Docs
/ / /
Manual da Biblioteca PHP
/

Especifique documentos a serem devolvidos

Nesta página

  • Visão geral
  • Dados de amostra
  • Limite
  • Sort
  • Ignorar
  • Combinar Limite, Classificar e Ignorar
  • Especificar tipo de devolução
  • Exemplo
  • Informações adicionais
  • Documentação da API

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

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 .

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.

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" }

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"}
...

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.

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 objetos

  • Documentos 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 .

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
)
...

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 .

Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API:

Voltar

Contagem de documentos