مرور فصل

در این فصل به معرفی نحوه تنظیم بازگشتی فیلدهای مشخص شده در کوئری‌های 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 } ] }
]);

فرمت

{<فیلد>: 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 است.