Visão Geral do Capítulo

Este capítulo apresenta como configurar o retorno de campos especificados em consultas MongoDB, em vez de retornar todos os dados do campo.

Dados de Teste

Insira algumas peças de dados na coleção de inventário

db.inventory.insertMany( [
  { item: "journal", status: "A", size: { h: 14, w: 21, uom: "cm" }, instock: [ { warehouse: "A", qty: 5 } ] },
  { item: "notebook", status: "A",  size: { h: 8.5, w: 11, uom: "in" }, instock: [ { warehouse: "C", qty: 5 } ] },
  { item: "paper", status: "D", size: { h: 8.5, w: 11, uom: "in" }, instock: [ { warehouse: "A", qty: 60 } ] },
  { item: "planner", status: "D", size: { h: 22.85, w: 30, uom: "cm" }, instock: [ { warehouse: "A", qty: 40 } ] },
  { item: "postcard", status: "A", size: { h: 10, w: 15.25, uom: "cm" }, instock: [ { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ] }
]);

Formato

{<campo>: 1 ou 0}

Explicação:

  • - nome do campo
  • 1 representa retornar o campo, 0 representa excluir o campo (ou seja, não retornar)

Dica: Usar verdadeiro/falso em vez de 1 e 0 também é aceitável.

Retornar Campos Especificados

Defina quais campos retornar através do segundo parâmetro da função find.

db.inventory.find( { status: "A" }, { item: 1, status: 1 } )

Explicação:

  • Documentos em que o status satisfaz A são consultados.
  • Retorna os campos _id, item e status.

Dica: O campo _id é retornado por padrão.

Equivalente em SQL:

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

Excluir Campos Especificados

db.inventory.find( { status: "A" }, { status: 0, instock: 0 } )

Explicação:

  • Documentos em que o status satisfaz A são consultados
  • Retorna todos os dados exceto os campos item e status.

Retornar Campos Específicos em Documentos Aninhados

db.inventory.find(
   { status: "A" },
   { item: 1, status: 1, "size.uom": 1 }
)

Explicação:

  • size.uom representa retornar o campo uom sob size.