Обзор главы

В этой главе рассматривается способ задания возврата определенных полей в запросах MongoDB, а не возврата всех данных полей.

Тестовые данные

Вставьте несколько записей в коллекцию inventory

db.inventory.insertMany( [
  { item: "журнал", status: "A", size: { h: 14, w: 21, uom: "см" }, instock: [ { warehouse: "A", qty: 5 } ] },
  { item: "блокнот", status: "A",  size: { h: 8.5, w: 11, uom: "дюйм" }, instock: [ { warehouse: "C", qty: 5 } ] },
  { item: "бумага", status: "D", size: { h: 8.5, w: 11, uom: "дюйм" }, instock: [ { warehouse: "A", qty: 60 } ] },
  { item: "планер", status: "D", size: { h: 22.85, w: 30, uom: "см" }, instock: [ { warehouse: "A", qty: 40 } ] },
  { item: "открытка", status: "A", size: { h: 10, w: 15.25, uom: "см" }, instock: [ { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ] }
]);

Формат

{<поле>: 1 или 0}

Пояснение:

  • <поле> - название поля
  • 1 представляет возврат поля, 0 представляет исключение поля (т.е. не возвращать)

Совет: Использование значений true/false вместо 1 и 0 также допустимо.

Возврат определенных полей

Задайте возвращение полей через второй параметр функции find.

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

Пояснение:

  • Запрашиваются документы, где удовлетворяется статус A.
  • Возвращает поля _id, item и status.

Совет: Поле _id возвращается по умолчанию.

Эквивалент SQL:

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

Исключение определенных полей

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

Пояснение:

  • Запрашиваются документы, где удовлетворяется статус A.
  • Возвращает все данные, кроме полей item и status.

Возврат определенных полей во вложенных документах

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

Пояснение:

  • size.uom представляет возврат поля uom внутри size.