Especifique campos para retornar
Nesta página
Visão geral
Neste guia, você pode aprender como especificar quais campos retornar de uma operação de leitura usando uma projeção. Uma projeção é um documento que especifica quais campos o MongoDB retorna de uma query.
Dados de amostra
Os exemplos neste guia utilizam a coleção do restaurants
no banco de dados de dados do sample_restaurants
a partir dos conjuntos de dados de amostra do Atlas. Para saber como criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o guia Iniciar com Atlas .
Tipos de projeção
Você pode usar uma projeção para especificar quais campos incluir em um documento de devolução ou para especificar quais campos excluir.
Ao especificar determinados campos para incluir em uma projeção, todos os outros campos são implicitamente excluídos (exceto o campo _id
, que é incluído por padrão). Não é possível combinar declarações de inclusão e exclusão em uma única projeção, a menos que você esteja excluindo o campo _id
.
Para remover o campo _id
do documento retornado, você deve excluí-lo explicitamente.
Especifique campos a serem incluídos
O exemplo seguinte utiliza a função mongoc_collection_find_with_opts()
para localizar todos os restaurantes com o valor de campo name
de "Emerald Pub"
. Especifica uma projeção para retornar somente os campos name
, cuisine
e borough
dos documentos retornados usando o parâmetro de opções de mongoc_collection_find_with_opts()
.
const bson_t *doc; bson_t *filter = BCON_NEW ("name", BCON_UTF8 ("Emerald Pub")); bson_t *opts = BCON_NEW ("projection", "{", "name", BCON_BOOL (true), "cuisine", BCON_BOOL (true), "borough", BCON_BOOL (true), "}"); mongoc_cursor_t *results = mongoc_collection_find_with_opts (collection, filter, opts, NULL); while (mongoc_cursor_next (results, &doc)) { char *str = bson_as_canonical_extended_json (doc, NULL); printf ("%s\n", str); bson_free (str); } bson_destroy (filter); bson_destroy (opts); mongoc_cursor_destroy (results);
{ "_id" : { "$oid" : "..." }, "borough" : "Manhattan", "cuisine" : "American", "name" : "Emerald Pub" } { "_id" : { "$oid" : "..." }, "borough" : "Queens", "cuisine" : "American", "name" : "Emerald Pub" }
Exclua o _id
campo
Ao especificar campos a serem incluídos, você também pode excluir o campo _id
do documento retornado.
O exemplo seguinte executa a mesma query do exemplo anterior, mas exclui o campo _id
da projeção:
const bson_t *doc; bson_t *filter = BCON_NEW ("name", BCON_UTF8 ("Emerald Pub")); bson_t *opts = BCON_NEW ("projection", "{", "name", BCON_BOOL (true), "cuisine", BCON_BOOL (true), "borough", BCON_BOOL (true), "_id", BCON_BOOL (false), "}"); mongoc_cursor_t *results = mongoc_collection_find_with_opts (collection, filter, opts, NULL); while (mongoc_cursor_next (results, &doc)) { char *str = bson_as_canonical_extended_json (doc, NULL); printf ("%s\n", str); bson_free (str); } bson_destroy (filter); bson_destroy (opts); mongoc_cursor_destroy (results);
{ "borough" : "Manhattan", "cuisine" : "American", "name" : "Emerald Pub" } { "borough" : "Queens", "cuisine" : "American", "name" : "Emerald Pub" }
Informações adicionais
Para saber mais sobre projeções, consulte o guia Campos de projeto no manual do MongoDB Server .
Documentação da API
Para saber mais sobre qualquer uma das funções ou tipos discutidos neste guia, consulte a seguinte documentação da API: