رفتن به نوشته‌ها

دسته: MongoDB (مونگو دی‌بی)

استفاده از اپراتور filter$ در MongoDB

ما در قسمت قبل با اپراتور های size$ و slice$ آشنا شدیم و حالا نوبت به اپراتور filter رسیده است. در حال حاضر ساختار هر سند در کالکشن friends به شکل زیر است. در قدم اول هدف ما این است که فقط نمرات بالاتر از 60 را نمایش بدهیم. این کار با استفاده از همان project انجام می شود اما پیچیده تر از کد های قبلی است. برای نمایش نمرات بالاتر از 60 می توانیم از اپراتور filter$ استفاده کنیم که کارش فیلتر کردن اعضای یک آرایه است. برای استفاده از این اپراتور باید سه آرگومان را به آن پاس بدهیم (هنوز اجرا نکنید): db.friends.aggregate([
{ $project: { _id: 0, examScores: { $filter: { input: “$examScores”, as: “sc”, cond: {} } } } }
]).pretty() در قدم اول فیلدی به نام examScores ساخته ام (شما می توانید نام آن را هر چیز دیگری بگذارید) و سپس اپراتور filter را به آن داده ام. این اپراتور ابتدا یک آرگومان به نام input می گیرد که فیلد هدف را مشخص می کند. من می خواهم فیلد examScores را فیلتر کنم بنابراین آن را به input پاس داده ام. سپس آرگومان دوم به نام as را داریم که یک نام مستعار برای تک تک اعضای درون آرایه است. البته در اصل این آرگومان یک متغیر محلی است که درون عملیات فیلتر استفاده خواهد شد. شما می توانید هر مقدار دلخواهی را برای این آرگومان در نظر بگیرید (من sc را انتخاب کرده ام). آخرین آرگومان ما نیز cond (مخفف condition – شرط) می باشد که فعلا خالی است. ما می توانیم از انواع اپراتور های مختلف در cond استفاده کنیم که یکی از آن ها gt$ است: