Docs Menu
Docs Home
/ /

Especifica los documentos a devolver

En esta guía, puede aprender a especificar qué documentos y qué tipos devolver de una operación de lectura pasando las siguientes opciones al MongoDB\Collection::find() o método MongoDB\Collection::findOne():

  • límite: especifica el número máximo de documentos que se devolverán de una consulta

  • sort: especifica el orden de clasificación de los documentos devueltos

  • saltar: especifica la cantidad de documentos que se deben omitir antes de devolver los resultados de la consulta

  • typeMap: convierte los documentos devueltos a un tipo de datos especificado

Los ejemplos de esta guía utilizan la restaurants colección sample_restaurants de la base de datos de los conjuntos de datos de ejemplo de Atlas. Para acceder a esta colección desde su aplicación PHP, cree una MongoDB\Client instancia de que se conecte a un clúster de Atlas y asigne el siguiente valor a su $collection variable:

$collection = $client->sample_restaurants->restaurants;

Para aprender cómo crear una implementación gratuita de MongoDB y cargar los conjuntos de datos de muestra, consulte la guía de introducción a MongoDB.

Para especificar la cantidad máxima de documentos devueltos de una operación de lectura, cree una matriz que establezca la opción limit y pase la matriz como parámetro al método MongoDB\Collection::find().

El siguiente ejemplo encuentra todos los restaurantes que tienen un valor de campo cuisine de 'Italian' y limita los 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"}

Tip

El ejemplo anterior devuelve los primeros cinco documentos que coinciden con la consulta según su orden natural en la base de datos. La siguiente sección describe cómo devolver los documentos en un orden específico.

Para devolver los documentos en un orden específico, cree una matriz que establezca la opción sort. Al configurar esta opción, incluya el campo por el que se ordenarán los resultados y la dirección de ordenación. Un valor de 1 ordena los valores de menor a mayor, y un valor de -1 los ordena de mayor a menor. A continuación, pase la matriz como parámetro al método MongoDB\Collection::find() o MongoDB\Collection::findOne().

El siguiente ejemplo devuelve todos los documentos que tienen un valor cuisine de 'Italian', ordenados en orden ascendente de name valores de 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 omitir una cantidad específica de documentos antes de devolver los resultados de su consulta, cree una matriz que establezca la opción skip y pase la matriz como parámetro al método MongoDB\Collection::find() o MongoDB\Collection::findOne().

El siguiente ejemplo devuelve todos los documentos que tienen un valor de campo borough de 'Manhattan' y omite los primeros 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"}
...

Puede configurar las opciones limit, sort y skip en una sola matriz de opciones y pasarla como parámetro a la operación de lectura. Esto le permite establecer un número máximo de documentos ordenados para devolver, omitiendo un número específico de documentos antes de devolverlos.

El siguiente ejemplo devuelve 5 documentos con un valor cuisine de 'Italian'. Los resultados se ordenan ascendentemente por el valor del campo name, omitiendo los primeros 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"}

Nota

El orden en que se llaman estos métodos no modifica los documentos devueltos. La biblioteca PHP de MongoDB reordena automáticamente las llamadas para realizar primero la operación de ordenación, luego la de omisión y finalmente la de límite.

Para personalizar el tipo de datos de los documentos devueltos por una operación de lectura, puede pasar la opción typeMap en un parámetro de matriz.

De forma predeterminada, los métodos llamados en una instancia MongoDB\Client, MongoDB\Database o MongoDB\Collection utilizan el siguiente mapa de tipos:

[
'array' => 'MongoDB\Model\BSONArray',
'document' => 'MongoDB\Model\BSONDocument',
'root' => 'MongoDB\Model\BSONDocument',
]

Este tipo de mapa predeterminado realiza las siguientes conversiones:

  • Matrices de MongoDB\Model\BSONArray objetos

  • Documentos BSON de nivel superior e incrustados en objetos MongoDB\Model\BSONDocument

En un mapa de tipos personalizado, puede especificar conversiones a cualquier tipo que implemente MongoDB\BSON\Unserializable, así como los tipos array, stdClass y object.

El siguiente ejemplo devuelve todos los documentos que tienen un valor cuisine de 'Hawaiian' y especifica la opción typeMap para convertir los documentos en valores de matriz:

$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 obtener más información sobre cómo recuperar documentos, consulte la Guíade recuperación de datos.

Para obtener más información sobre cómo especificar una consulta, consulte la guía Especificar una consulta.

Para aprender más sobre cualquiera de los métodos o tipos analizados en esta guía, consulta la siguiente documentación de API:

Volver

Buscar documentos

En esta página