Resumen del capítulo

Este capítulo presenta cómo configurar el retorno de campos especificados en las consultas de MongoDB en lugar de retornar todos los datos de campo.

Datos de prueba

Inserta algunos datos en la colección de inventario

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

Formato

{<campo>: 1 o 0}

Explicación:

  • - nombre del campo
  • 1 representa retornar el campo, 0 representa excluir el campo (es decir, no retornarlo)

Consejo: El uso de true/false en lugar de 1 y 0 también es aceptable.

Retornar campos especificados

Configura qué campos retornar a través del segundo parámetro de la función find.

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

Explicación:

  • Se consultan los documentos donde el estado satisface A.
  • Retorna los campos _id, item y status.

Consejo: El campo _id se retorna por defecto.

Equivalente en SQL:

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

Excluir campos especificados

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

Explicación:

  • Se consultan los documentos donde el estado satisface A.
  • Retorna todos los datos excepto los campos item y status.

Retornar campos especificados en documentos anidados

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

Explicación:

  • size.uom representa retornar el campo uom bajo size.