در قسمت قبل در مورد projection به طور کلی صحبت کردیم اما حالت خاصی در مورد projection وجود دارد که مربوط به آرایه ها است و باید قسمتی از زمان خود را روی آن بگذاریم. ساختار هر کدام از داده های ما برای هر سریال به شکل زیر است. بنابراین برای هر سریال چند ساختار آرایه ای وجود دارد. حالا تصور کنید که به دنبال سریال هایی هستیم که ژانر درام دارند. این کار بسیار ساده ای است که آن را در اوایل این فصل یاد گرفتیم: db.movies.find({genres: “Drama”}).pretty() کوئری بالا کل داده های هر سریالی را که دارای ژانر درام باشد، برای ما برمی گرداند اما اگر بخواهیم فقط همین قسمت Drama را دریافت کنیم چطور؟ ما می دانیم که این کار بر عهده ی projection است اما زمانی که بدین شکل با آرایه ها کار می کنیم باید از روش خاصی استفاده کنیم: db.movies.find({genres: “Drama”}, {“genres.$”: 1}).pretty() استفاده از علامت $ در اینجا به معنی first match است یعنی اولین ژانری که بر اساس فیلتر پاس داده شده صحیح می باشد، به جای $ قرار می گیرد. نتیجه ی اجرای کوئری بالا به شکل زیر است (من فقط چند مورد را می آورم تا شلوغ نشود). باید به مفهوم first match توجه ویژه ای داشته باشید چرا که در هر حالتی، اولین نتیجه، برابر با علامت $ خواهد بود. مثلا به کوئری پیچیده تر زیر نگاه کنید: db.movies.find({genres: {$all: [“Drama”, “Horror”]}}, {“genres.$”: 1}).pretty()
پنل نویسندگان
