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

Especifique los campos a devolver

En esta guía, puedes aprender a usar la librería PHP de MongoDB para especificar qué campos devolver de una operación de lectura usando una proyección. La proyección es un documento que especifica qué campos devuelve MongoDB de una query.

The examples in this guide use the restaurants collection in the sample_restaurants database from the Atlas sample datasets. To access this collection from your PHP application, instantiate a MongoDB\Client that connects to an Atlas cluster and assign the following value to your $collection variable:

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

Para aprender a crear una implementación gratuita de MongoDB y cargar los conjuntos de datos de muestra, consulta la guía Introducción de MongoDB.

Puedes usar una proyección para especificar qué campos incluir en un documento de devolución o para especificar qué campos excluir. No puedes combinar instrucciones de inclusión y exclusión en una única proyección, a menos que excluyas el campo _id.

Para especificar los campos que se incluirán en el resultado, pasa un arreglo de opciones al método MongoDB\Collection::findOne() o MongoDB\Collection::find() que establezca la opción projection. Utiliza la siguiente sintaxis para configurar esta opción:

$options = [
'projection' => [
'<field name>' => 1,
],
];

El siguiente ejemplo crea un arreglo de opciones y configura la opción projection para que sólo devuelva los campos name, cuisine y borough de los documentos coincidentes. Luego, llama al método find() para encontrar todos los restaurantes en los que el valor del campo name es 'Emerald Pub', pasando el arreglo de opciones como parámetro a find():

$options = [
'projection' => [
'name' => 1,
'cuisine' => 1,
'borough' => 1,
],
];
$cursor = $collection->find(['name' => 'Emerald Pub'], $options);
foreach ($cursor as $doc) {
echo json_encode($doc), PHP_EOL;
}

Cuando utilizas una proyección para especificar los campos que se incluirán en el documento de retorno, el campo _id también se incluye por defecto. Todos los demás campos se excluyen implícitamente. Para remover el campo _id del documento de retorno, se debe excluirlo explícitamente.

Al especificar los campos a incluir, también puedes excluir el campo _id del documento devuelto.

El siguiente ejemplo ejecuta la misma query que el ejemplo anterior, pero excluye el campo _id de la proyección:

$options = [
'projection' => [
'_id' => 0,
'name' => 1,
'cuisine' => 1,
'borough' => 1,
],
];
$cursor = $collection->find(['name' => 'Emerald Pub'], $options);
foreach ($cursor as $doc) {
echo json_encode($doc), PHP_EOL;
}

Para especificar los campos que se deben excluir del resultado, pasa un arreglo de opciones al método MongoDB\Collection::findOne() o MongoDB\Collection::find() que establezca la opción projection. Utiliza la siguiente sintaxis para configurar esta opción:

$options = [
'projection' => [
'<field name>' => 0,
],
];

El siguiente ejemplo crea un arreglo de opciones y configura la opción projection para excluir los campos grades y address de los documentos coincidentes. Luego llama al método find() para encontrar todos los restaurantes en los que el valor del campo name es 'Emerald Pub', pasando el arreglo de opciones como un parámetro a find():

$options = [
'projection' => [
'grades' => 0,
'address' => 0,
],
];
$cursor = $collection->find(['name' => 'Emerald Pub'], $options);
foreach ($cursor as $doc) {
echo json_encode($doc), PHP_EOL;
}

Cuando se utiliza una proyección para especificar qué campos deben excluirse, cualquier campo no especificado se incluye implícitamente en el documento de retorno.

Para obtener más información sobre las proyecciones, consulte la guía de Campos del proyecto en el manual de MongoDB Server.

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