Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Especifica los documentos a devolver

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

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

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

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

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

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

Para saber cómo crear una implementación gratuita de MongoDB y cargar los conjuntos de datos de ejemplo, consulta la guía MongoDB Primeros Pasos.

Para especificar el número máximo de documentos devueltos desde una operación de lectura, crea un arreglo que establezca la opción limit y pasa el arreglo como un 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 retornar los documentos en un orden especificado.

Para devolver documentos en un orden específico, se debe crear un arreglo que establezca la opción sort. Al configurar esta opción, incluye el campo por el que se ordenarán los resultados y la dirección del orden. Un valor de 1 ordena los valores de menor a mayor y un valor de -1 los ordena de mayor a menor. Luego, pase el arreglo 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 cuisine igual a 'Italian', ordenados en orden ascendente según los valores del campo name:

$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 especificada de documentos antes de devolver los resultados de la query, cree un arreglo que establezca la opción skip y pase el arreglo 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"}
...

Puedes configurar las opciones limit, sort y skip en un solo arreglo de opciones y pasar el arreglo como parámetro a la operación de lectura. Esto te permite establecer un número máximo de documentos ordenados para devolver, omitiendo un número especificado de documentos antes de devolverlos.

El siguiente ejemplo devuelve 5 documentos que tienen un valor de cuisine igual a 'Italian'. Los resultados están clasificados en orden ascendente 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 el que se llaman estos métodos no cambia los documentos que se devuelven. La librería de PHP de MongoDB reorganiza automáticamente las llamadas para realizar primero la operación de ordenación, luego la operación de omisión y luego, la operación de limitación.

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

Por defecto, los métodos llamados en una instancia de 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 mapa de tipos por defecto realiza las siguientes conversiones:

  • Arreglos a MongoDB\Model\BSONArray objetos

  • Documentos BSON embebidos y de nivel superior a objetos MongoDB\Model\BSONDocument

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

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

$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, consulta la guía Recuperar datos.

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

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