Docs Menu
Docs Home
/ /

Especificar campos a devolver

En esta guía, aprenderá a usar la biblioteca PHP de MongoDB para especificar los campos que se devolverán de una operación de lectura mediante una proyección. Una proyección es un documento que especifica los campos que MongoDB devuelve de una consulta.

Los ejemplos de esta guía utilizan el restaurants colección en la base de datos sample_restaurants de la Conjuntos de datos de muestra de Atlas. Para acceder a esta colección desde su aplicación PHP, cree MongoDB\Client una 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.

Puede usar una proyección para especificar qué campos incluir en un documento de retorno o qué campos excluir. No puede combinar declaraciones de inclusión y exclusión en una sola proyección, a menos que excluya el campo _id.

Para especificar los campos que se incluirán en el resultado, pase una matriz de opciones al método MongoDB\Collection::findOne() o MongoDB\Collection::find() que establece la opción projection. Utilice la siguiente sintaxis para establecer 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;
}
{"_id":{"$oid":"..."},"borough":"Manhattan","cuisine":"American","name":"Emerald Pub"}
{"_id":{"$oid":"..."},"borough":"Queens","cuisine":"American","name":"Emerald Pub"}

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 puede excluir el campo _id del documento devuelto.

El siguiente ejemplo realiza la misma consulta 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;
}
{"borough":"Manhattan","cuisine":"American","name":"Emerald Pub"}
{"borough":"Queens","cuisine":"American","name":"Emerald Pub"}

Para especificar los campos que se excluirán del resultado, pase una matriz de opciones al método MongoDB\Collection::findOne() o MongoDB\Collection::find() que establece la opción projection. Utilice la siguiente sintaxis para establecer esta opción:

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

El siguiente ejemplo crea una matriz de opciones y establece la opción projection para excluir los campos grades y address de los documentos coincidentes. A continuación, llama al método find() para encontrar todos los restaurantes cuyo valor del campo name sea 'Emerald Pub', pasando la matriz de opciones como 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;
}
{"_id":{"$oid":"..."},"borough":"Manhattan","cuisine":"American",
"name":"Emerald Pub","restaurant_id":"40367329"}
{"_id":{"$oid":"..."},"borough":"Queens","cuisine":"American",
"name":"Emerald Pub","restaurant_id":"40668598"}

Cuando se utiliza una proyección para especificar qué campos excluir, 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 Campos del proyecto en el manual del servidor MongoDB.

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

  • MongoDB\Collection::findOne()

  • MongoDB\Collection::find()

Volver

Especifica los documentos a devolver

En esta página