Página inicial do Docs → Desenvolver aplicações → Manual 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.
Retorno de todos os campos em documentos correspondentes
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"
Retorno somente dos campos especificados e do campo _id
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"
Supressão do campo _id
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.
Retorno de todos os campos, exceto os excluídos
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.
Retorno de campos específicos de documentos incorporados
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 documentosize
.
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 } }
.
Supressão de campos específicos em documentos incorporados
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 } }
.
Projeção em documentos incorporados em uma array
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 arrayinstock
.
Elementos de array específicos do projeto na array retornada
Projetar campos com expressões de aggregation
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 } ]
Considerações adicionais
O MongoDB impõe restrições adicionais em relação às projeções. Consulte Restrições de Projeção para detalhes.