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

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

آشنایی با جزئیات stageهای فریم‌ورک aggregation

ما تا این قسمت با انواع stage های فریم ورک Aggregation آشنا شده ایم اما باید درک عمیق تری نسبت به آن ها پیدا کنیم. تصور کنید ما به دنبال 10 نفر هستیم که تاریخ تولدشان از همه قدیمی تر باشد. چرا نگفتم سن بالاتری داشته باشند؟ به دلیل اینکه ما در dob یک فیلد date داریم که به صورت یک رشته ی زمانی خاص نوشته شده است و می خواهیم آن را مقایسه کنیم (گرچه این رشته را تبدیل خواهیم کرد). البته در عمل 10 فردی را پیدا خواهیم کرد که از همه پیر تر هستند. سپس بعد از پیدا کردن این 10 نفر می خواهیم 10 نفر بعدی را با همین خصوصیات پیدا کنیم (چیزی شبیه به pagination). در قدم اول باید یک stage برای project داشته باشیم تا رشته ی تاریخ تولد را تبدیل کنیم: db.persons.aggregate([
{ $project: { _id: 0, name: 1, birthdate: { $toDate: “$dob.date” } } }
]).pretty() اپراتور toDate$ یک رشته ی تاریخی را گرفته و آن را به Date تبدیل می کند و بقیه ی موارد آن را نیز بار ها تمرین کرده ایم بنابراین توضیح بیشتری نمی دهم. با اجرای این کوئری نتیجه ی زیر را می گیریم (من فقط یکی از اسناد برگردانده شده را می آورم): “name” : {
“title” : “mr”,
“first” : “بنیامین”,
“last” : “سالاری”
},
“birthdate” : ISODate(“1984-03-10T22:12:43Z”) همانطور که می بینید رشته ی تاریخ ما تبدیل به داده ی ISODate شده است. در مرحله ی بعدی می توانیم داده های برگردانده شده را sort$ کنیم تا ببینیم چه کسی از همه پیر تر است. به نظر شما کوئری زیر جواب می دهد؟