Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

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.

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 tu aplicaci贸n PHP, instancie un MongoDB\Client que se conecte a un cl煤ster de Atlas y asigne 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.

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;
}
{"_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 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;
}
{"borough":"Manhattan","cuisine":"American","name":"Emerald Pub"}
{"borough":"Queens","cuisine":"American","name":"Emerald Pub"}

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;
}
{"_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 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:

  • MongoDB\Collection::findOne()

  • MongoDB\Collection::find()

Volver

Especifica los documentos a devolver

En esta p谩gina