MongoDB

MongoDB — $lookup ($lookup)

آخرین بروزرسانی: 1404/08/20

$lookup ($lookup)

اینجا «جوین با $lookup» را خیلی ساده می بینیم. این مرحله یک «جوین بیرونی چپ» است. یعنی اسناد کالکشن اصلی، با اسناد کالکشن دیگر وصل می شوند. سپس نتیجه تطبیق، داخل یک فیلد آرایه برمی گردد.

ساختار $lookup و فیلدهای لازم

$lookup چهار فیلد ضروری دارد. هر کدام کار مشخصی دارند و باید تنظیم شوند.

  • from: نام کالکشن مقصد در همان دیتابیس.
  • localField: فیلد در کالکشن اصلی برای تطبیق.
  • foreignField: فیلد متناظر در کالکشن مقصد.
  • as: نام فیلد خروجی برای نتایج تطبیق.
db.comments.aggregate([
  {
    $lookup: {
      from: "movies",
      localField: "movie_id",
      foreignField: "_id",
      as: "movie_details"
    }
  },
  {
    $limit: 1
  }
])

مشاهده در ادیتور

گام های عملی جوین با $lookup

  1. کالکشن مقصد را در from مشخص کن.
  2. کلیدهای تطبیق را در localField و foreignField بده.
  3. نام فیلد خروجی را در as تعیین کن.

نکته: خروجی as یک آرایه است. بنابراین ممکن است چند تطبیق برگردد.

نمونه کاربرد و نتیجه

در نمونه بالا، هر comment همراه با جزئیات movie برمی گردد. چون جوین بیرونی چپ است، کامنت های بدون فیلم نیز حفظ می شوند.

برای شمارش بعدی، بخش $count را ببین. همچنین برای خروجی گرفتن از نتایج، بخش $out مناسب است.

جمع بندی سریع

  • $lookup جوین بیرونی چپ بین کالکشن ها می سازد.
  • چهار فیلد ضروری دارد: from، localField، foreignField، as.
  • نتیجه جوین در فیلد آرایه ای as ذخیره می شود.
  • مثال بالا یک سند را با $limit نشان می دهد.