Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Especifique los campos a devolver

En esta guía, puedes aprender a usar el controlador de C++ para especificar qué campos devolver de una operación de lectura usando una proyección. Una 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 su aplicación C++, instancie un mongocxx::client que se conecte a un clúster de Atlas y asigne los siguientes valores a sus variables db y collection:

auto db = client["sample_restaurants"];
auto collection = db["restaurants"];

Para aprender cómo crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de ejemplo, consulta la guía MongoDB Get Started.

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, cree una instancia de la clase mongocxx::options::find y configure su campo projection. Para configurar este campo, utilice la siguiente sintaxis:

<options instance>.projection(make_document(kvp("<field name>", 1)));

El siguiente ejemplo configura el campo projection de un objeto mongocxx::options::find para que devuelva solo los campos name, cuisine y borough de los documentos coincidentes. A continuación, llama al método find() para buscar todos los restaurantes cuyo valor del campo name sea "Emerald Pub", pasando el objeto mongocxx::options::find como parámetro a find():

mongocxx::options::find opts{};
opts.projection(make_document(kvp("name", 1), kvp("cuisine", 1), kvp("borough", 1)));
auto cursor = collection.find(make_document(kvp("name", "Emerald Pub")), opts);
for(auto&& doc : cursor) {
std::cout << bsoncxx::to_json(doc) << std::endl;
}
{ "_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 realiza la misma consulta que el ejemplo anterior, pero excluye el campo _id de la proyección:

mongocxx::options::find opts{};
opts.projection(make_document(kvp("_id", 0), kvp("name", 1), kvp("cuisine", 1), kvp("borough", 1)));
auto cursor = collection.find(make_document(kvp("name", "Emerald Pub")), opts);
for(auto&& doc : cursor) {
std::cout << bsoncxx::to_json(doc) << std::endl;
}
{ "borough" : "Manhattan", "cuisine" : "American", "name" : "Emerald Pub" }
{ "borough" : "Queens", "cuisine" : "American", "name" : "Emerald Pub" }

Para especificar los campos que se excluirán en el resultado, crea una instancia de la clase mongocxx::options::find y establece su campo projection. Para establecer este campo, utiliza la siguiente sintaxis:

<options instance>.projection(make_document(kvp("<field name>", 0)));

El siguiente ejemplo establece el campo projection del objeto mongocxx::options::find para excluir los campos grades y address de los documentos coincidentes. Luego llama al método find() para encontrar todos los restaurantes donde el valor del campo name es "Emerald Pub", pasando el objeto mongocxx::options::find como parámetro a find():

mongocxx::options::find opts{};
opts.projection(make_document(kvp("grades", 0), kvp("address", 0)));
auto cursor = collection.find(make_document(kvp("name", "Emerald Pub")), opts);
for(auto&& doc : cursor) {
std::cout << bsoncxx::to_json(doc) << std::endl;
}
{ "_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 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:

Volver

Especifica los documentos a devolver

En esta página