Przegląd rozdziału

Niniejszy rozdział przedstawia, jak ustawić zwracanie określonych pól w zapytaniach MongoDB, zamiast zwracać wszystkie dane pól.

Dane testowe

Wstaw kilka elementów do kolekcji inventory

db.inventory.insertMany( [
  { item: "dziennik", status: "A", size: { h: 14, w: 21, uom: "cm" }, instock: [ { warehouse: "A", qty: 5 } ] },
  { item: "notes", status: "A",  size: { h: 8.5, w: 11, uom: "in" }, instock: [ { warehouse: "C", qty: 5 } ] },
  { item: "papier", status: "D", size: { h: 8.5, w: 11, uom: "in" }, instock: [ { warehouse: "A", qty: 60 } ] },
  { item: "kalendarz", status: "D", size: { h: 22.85, w: 30, uom: "cm" }, instock: [ { warehouse: "A", qty: 40 } ] },
  { item: "pocztówka", status: "A", size: { h: 10, w: 15.25, uom: "cm" }, instock: [ { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ] }
]);

Format

{<pole>: 1 lub 0}

Wyjaśnienie:

  • - nazwa pola
  • 1 oznacza zwrócenie pola, 0 oznacza wykluczenie pola (tj. nie zwracanie)

Wskazówka: Użycie true/false zamiast 1 i 0 jest również akceptowalne.

Zwracanie określonych pól

Ustaw, które pola mają zostać zwrócone poprzez drugi parametr funkcji find.

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

Wyjaśnienie:

  • Dokumenty, w których status jest zgodny z A, są wyszukiwane.
  • Zwraca pola _id, item i status.

Wskazówka: Pole _id jest domyślnie zwracane.

Odpowiednik w SQL:

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

Wykluczenie określonych pól

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

Wyjaśnienie:

  • Dokumenty, w których status jest zgodny z A, są wyszukiwane.
  • Zwraca wszystkie dane z wyjątkiem pól item i status.

Zwracanie określonych pól w zagnieżdżonych dokumentach

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

Wyjaśnienie:

  • size.uom oznacza zwracanie pola uom pod size.