장 개요

본 장에서는 MongoDB 쿼리에서 모든 필드 데이터를 반환하는 것이 아니라 지정된 필드의 반환하는 방법을 소개합니다.

테스트 데이터

인벤토리 컬렉션에 몇 가지 데이터를 삽입합니다.

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 } ] }
]);

포맷

{<field>: 1 또는 0}

설명:

  • - 필드 이름
  • 1은 해당 필드를 반환하고, 0은 해당 필드를 제외함을 나타냄 (즉, 반환하지 않음)

팁: 1과 0 대신에 true/false를 사용하는 것도 허용됩니다.

지정된 필드 반환

find 함수의 두 번째 매개변수를 통해 반환할 필드를 설정합니다.

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

설명:

  • status가 A를 만족하는 문서들을 쿼리합니다.
  • _id, item 및 status 필드를 반환합니다.

팁: _id 필드는 기본적으로 반환됩니다.

동등한 SQL:

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

지정된 필드 제외

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

설명:

  • status가 A를 만족하는 문서들을 쿼리합니다.
  • item 및 status 필드를 제외한 모든 데이터를 반환합니다.

중첩된 문서의 지정된 필드 반환

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

설명:

  • size.uom은 size 하위의 uom 필드를 반환함을 나타냅니다.