Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

Campos do projeto para retornar da consulta

Nesta página

  • Retorno de todos os campos em documentos correspondentes
  • Retorno somente dos campos especificados e do campo _id
  • Supressão do campo _id
  • Retorno de todos os campos, exceto os excluídos
  • Retorno de campos específicos de documentos incorporados
  • Supressão de campos específicos em documentos incorporados
  • Projeção em documentos incorporados em uma array
  • Elementos de array específicos do projeto na array retornada
  • Projetar campos com expressões de aggregation
  • Considerações adicionais

➤ Use o menu suspenso Selecione a linguagem no canto superior direito para definir a linguagem dos exemplos a seguir.


Por padrão, as queries no MongoDB retornam todos os campos em documentos correspondentes. Para limitar a quantidade de dados que o MongoDB envia aos aplicativos, você pode incluir um documento de projeção para especificar ou restringir os campos a serem retornados.

O exemplo a seguir retorna todos os campos de todos os documentos na coleção inventory em que o status é igual a "A":

A operação corresponde à seguinte declaração SQL:

SELECT * from inventory WHERE status = "A"

Uma projeção pode incluir explicitamente vários campos configurando o <field> para 1 no documento de projeção. A operação a seguir retorna todos os documentos que correspondem à query. No conjunto de resultados, somente os campos item, status e, por padrão, os campos _id retornam nos documentos correspondentes.

A operação corresponde à seguinte declaração SQL:

SELECT _id, item, status from inventory WHERE status = "A"

Você pode remover o campo _id dos resultados definindo-o como 0 na projeção, como no exemplo a seguir:

A operação corresponde à seguinte declaração SQL:

SELECT item, status from inventory WHERE status = "A"

Observação

Com exceção do campo _id, você não pode combinar declarações de inclusão e exclusão em documentos de projeção.

Em vez de listar os campos para retornar no documento correspondente, você pode usar uma projeção para excluir campos específicos. O exemplo a seguir retorna todos os campos, exceto os campos status e instock nos documentos correspondentes:

Observação

Com exceção do campo _id, você não pode combinar declarações de inclusão e exclusão em documentos de projeção.

Você pode retornar campos específicos de um documento incorporado. Use a notação de ponto para se referir ao campo incorporado e defina como 1 no documento de projeção.

O exemplo a seguir retorna:

  • O campo _id (retornado por padrão),

  • O campo item,

  • O campo status,

  • O campo uom do documento size.

O campo uom permanece incorporado no documento size.

Você também pode especificar campos incorporados usando o formulário aninhado. Por exemplo, { item: 1, status: 1, size: { uom: 1 } }.

Você pode suprimir campos específicos de um documento incorporado. Use a notação de ponto para fazer referência ao campo incorporado no documento de projeção e defina como 0.

O exemplo a seguir especifica uma projeção para excluir o campo uom dentro do documento size. Todos os outros campos são retornados nos documentos correspondentes:

Você também pode especificar campos incorporados usando o formulário aninhado. Por exemplo, { size: { uom: 0 } }.

Use a notação de pontos para projetar campos específicos dentro de documentos incorporados em uma array.

O exemplo a seguir especifica uma projeção para retornar:

  • O campo _id (retornado por padrão),

  • O campo item,

  • O campo status,

  • O campo qty nos documentos incorporados na array instock.

Você pode especificar expressões de aggregation em uma projeção de query. Expressões de aggregation permitem projetar novos campos e modificar os valores dos campos existentes.

Por exemplo, a operação abaixo usa expressões de aggregation para substituir o valor do campo status e projetar novos campos area e reportNumber.

Observação

O exemplo a seguir usa a sintaxe do MongoDB Shell. Para obter exemplos de drivers de projeção com agregação, consulte adocumentação do driver .

db.inventory.find(
{ },
{
_id: 0,
item: 1,
status: {
$switch: {
branches: [
{
case: { $eq: [ "$status", "A" ] },
then: "Available"
},
{
case: { $eq: [ "$status", "D" ] },
then: "Discontinued"
},
],
default: "No status found"
}
},
area: {
$concat: [
{ $toString: { $multiply: [ "$size.h", "$size.w" ] } },
" ",
"$size.uom"
]
},
reportNumber: { $literal: 1 }
}
)
[
{
item: 'journal',
status: 'Available',
area: '294 cm',
reportNumber: 1
},
{
item: 'planner',
status: 'Discontinued',
area: '685.5 cm',
reportNumber: 1
},
{
item: 'notebook',
status: 'Available',
area: '93.5 in',
reportNumber: 1
},
{
item: 'paper',
status: 'Discontinued',
area: '93.5 in',
reportNumber: 1
},
{
item: 'postcard',
status: 'Available',
area: '152.5 cm',
reportNumber: 1
}
]

O MongoDB impõe restrições adicionais em relação às projeções. Consulte Restrições de Projeção para detalhes.

Dica

Veja também:

← Consultas em um array de documentos incorporados