چندین خط لوله تجمیع را در یک مرحله بر روی یک مجموعه از اسناد ورودی پردازش می کند. هر خط لوله فرعی فیلد مخصوص به خود را در سند خروجی دارد که نتایج آن به عنوان آرایه ای از اسناد ذخیره می شود.
مرحله $facet به شما این امکان را می دهد که تجمیع های چند وجهی ایجاد کنید که داده ها را در ابعاد مختلف یا جنبه ها در یک مرحله تجمیع مشخص می کند. تجمیع های چند وجهی فیلترها و دسته بندی های متعددی را برای هدایت مرور و تحلیل داده ها ارائه می کنند. خرده فروشان معمولاً از faceting برای محدود کردن نتایج جستجو با ایجاد فیلترهایی بر روی قیمت محصول، سازنده، اندازه و غیره استفاده می کنند.
اسناد ورودی فقط یک بار به مرحله $facet منتقل می شوند.$facet تجمیع های مختلف را در یک مجموعه از اسناد ورودی بدون نیاز به بازیابی چندین بار اسناد ورودی فعال می کند.
مرحله $facet به شکل زیر است:
<جنبه $: |
| |
: [ , , . ] , |
: [ , , . ] , |
. |
> |
> |
نام فیلد خروجی را برای هر خط لوله مشخص شده مشخص کنید.
ملاحظات
خروجی مرحله $facet مشمول محدودیت 16 مگابایتی BSON Document Size است. اگر نتایج مرحله $facet از حد BSON Document Size بیشتر شود، تجمیع یک خطا ایجاد می کند.
نکته
همچنین ببینید:
رفتار - اخلاق
مراحل تجمیع مرتبط با جنبه، اسناد ورودی را دسته بندی و گروه بندی می کند. هر یک از مراحل مرتبط با جنبه زیر را در خطوط فرعی $facet مختلف برای انجام یک تجمع چند وجهی مشخص کنید:
سایر مراحل تجمیع نیز می توانند با $facet با استثناهای زیر استفاده شوند:
به هر خط لوله فرعی در $facet دقیقاً همان مجموعه اسناد ورودی ارسال می شود. این خطوط فرعی کاملاً مستقل از یکدیگر هستند و خروجی آرایه اسناد توسط هر یک در فیلدهای جداگانه در سند خروجی ذخیره می شود. خروجی یک خط لوله فرعی نمی تواند به عنوان ورودی برای یک خط لوله فرعی دیگر در همان مرحله $facet استفاده شود. در صورت نیاز به تجمیع بیشتر، مراحل اضافی را بعد از $facet اضافه کنید و نام فیلد، خروجی خط فرعی مورد نظر را مشخص کنید.
استفاده از شاخص
ترتیب خط لوله تعیین می کند که مرحله $facet چگونه از شاخص ها استفاده می کند.
- اگر مرحله $facet اولین مرحله در یک خط لوله باشد، مرحله یک COLLSCAN را اجرا خواهد کرد. مرحله $facet اگر اولین مرحله در خط لوله باشد از شاخص ها استفاده نمی کند.
- اگر مرحله $facet بعداً وارد خط لوله شود و مراحل قبلی از ایندکس استفاده کرده باشند، $facet یک COLLSCAN را در طول اجرا راه اندازی نمی کند.
برای مثال، مراحل $match یا $sort که قبل از مرحله $facet می آیند، می توانند از ایندکس ها استفاده کنند و $facet یک COLLSCAN را راه اندازی نمی کند.
مثال
یک فروشگاه آنلاین را در نظر بگیرید که موجودی آن در مجموعه آثار هنری زیر ذخیره شده است:
<"_شناسه" : 1, "عنوان" : "ستون های جامعه", "هنرمند" : "گروس", "سال" : 1926, |
"قیمت" : عدد متوسط("199. 99") , |
"برچسب ها" : [ "رنگ آمیزی", "طنز", "اکسپرسیونیسم", "کاریکاتور" ]> |
<"_شناسه" : 2, "عنوان" : "مالیخولیایی سوم", "هنرمند" : "جویدن", "سال" : 1902, |
"قیمت" : عدد متوسط("280. 00") , |
"برچسب ها" : [ "Woodcut", "اکسپرسیونیسم" ]> |
<"_شناسه" : 3, "عنوان" : "رقصنده", "هنرمند" : "میرو", "سال" : 1925, |
"قیمت" : عدد متوسط("76. 04") , |
"برچسب ها" : [ "روغن", "سوررئالیسم", "رنگ آمیزی" ]> |
<"_شناسه" : 4, "عنوان" : "موج بزرگ از Kanagawa", "هنرمند" : "هوکوزایی", |
"قیمت" : عدد متوسط("167. 30") , |
"برچسب ها" : [ "قطعه چوب", "ukiyo-e" ]> |
<"_شناسه" : 5, "عنوان" : "تداوم حافظه", "هنرمند" : "دالی", "سال" : 1931, |
"قیمت" : عدد متوسط("483. 00") , |
"برچسب ها" : [ "سوررئالیسم", "رنگ آمیزی", "روغن" ]> |
<"_شناسه" : 6, "عنوان" : "ترکیب VII", "هنرمند" : "کاندینسکی", "سال" : 1913, |
"قیمت" : عدد متوسط("385. 00") , |
"برچسب ها" : [ "روغن", "رنگ آمیزی", "خلاصه" ]> |
<"_شناسه" : 7, "عنوان" : "فریاد", "هنرمند" : "جویدن", "سال" : 1893, |
"برچسب ها" : [ "اکسپرسیونیسم", "رنگ آمیزی", "روغن" ]> |
<"_شناسه" : 8, "عنوان" : "گل آبی", "هنرمند" : "اوکی", "سال" : 1918, |
"قیمت" : عدد متوسط("118. 42") , |
"برچسب ها" : [ "خلاصه", "رنگ آمیزی" ]> |
در عملیات زیر از ویژگی های Faceting MongoDB استفاده می کند تا موجودی فروشگاه را در ابعاد مختلفی مانند برچسب ها ، قیمت و سال ایجاد شده در اختیار مشتریان قرار دهد. این مرحله از جنبه های $ دارای سه خط زیر است که از $ sortbycount ، سطل $ یا $ bucketauto برای انجام این تجمع چند وجهی استفاده می کنند. اسناد ورودی از آثار هنری فقط یک بار ، در ابتدای عمل از پایگاه داده گرفته می شود:
dbاثر هنری.تجمیع( [ |
| |
جنبه $: |
"طبقه بندی شده": [ |
<$ UNIND: "برچسب های $"> , |
<$ sortbycount: "برچسب های $"> |
] , |
"طبقه بندی شده باپریس": [ |
// اسناد را فیلتر کنید بدون قیمت به عنوان مثال ، _id: 7 |
<مسابقه: <قیمت: <$ وجود دارد: 1>>> , |
| |
سطل $: |
دسته بندی بر اساس: "قیمت $", |
مرزها: [ 0, 150, 200, 300, 400 ] , |
پیش فرض: "دیگر", |
خروجی: |
"شمردن": <مبلغ: 1> , |
"عناوین": <فشار: "عنوان $"> |
> |
> |
> |
] , |
"طبقه بندی شده Byyears (خودکار)": [ |
| |
$ $ bucketauto: |
دسته بندی بر اساس: "سال $", |
سطل: 4 |
> |
> |
] |
> |
> |
]) |
عملیات سند زیر را برمی گرداند:
| |
"طبقه بندی شده Byyears (خودکار)" : [ |
// سطل اول شامل می شود در سند بدون سال ، به عنوان مثال ، _id: 4 |
<"_شناسه" : <"حداقل" : خالی, "مکس" : 1902> , "شمردن" : 2> , |
<"_شناسه" : <"حداقل" : 1902, "مکس" : 1918> , "شمردن" : 2> , |
<"_شناسه" : <"حداقل" : 1918, "مکس" : 1926> , "شمردن" : 2> , |
<"_شناسه" : <"حداقل" : 1926, "مکس" : 1931> , "شمردن" : 2> |
] , |
"طبقه بندی شده باپریس" : [ |
| |
"_شناسه" : 0, |
"شمردن" : 2, |
"عناوین" : [ |
"رقصنده", |
"گل آبی" |
] |
> , |
| |
"_شناسه" : 150, |
"شمردن" : 2, |
"عناوین" : [ |
"ستون های جامعه", |
"موج بزرگ از Kanagawa" |
] |
> , |
| |
"_شناسه" : 200, |
"شمردن" : 1, |
"عناوین" : [ |
"مالیخولیایی سوم" |
] |
> , |
| |
"_شناسه" : 300, |
"شمردن" : 1, |
"عناوین" : [ |
"ترکیب VII" |
] |
> , |
| |
// شامل قیمت سند خارج از مرزهای سطل ، به عنوان مثال ، _id: 5 |
"_شناسه" : "دیگر", |
"شمردن" : 1, |
"عناوین" : [ |
"تداوم حافظه" |
] |
> |
] , |
"طبقه بندی شده" : [ |
<"_شناسه" : "رنگ آمیزی", "شمردن" : 6> , |
<"_شناسه" : "روغن", "شمردن" : 4> , |
<"_شناسه" : "اکسپرسیونیسم", "شمردن" : 3> , |
<"_شناسه" : "سوررئالیسم", "شمردن" : 2> , |
<"_شناسه" : "خلاصه", "شمردن" : 2> , |
<"_شناسه" : "قطعه چوب", "شمردن" : 1> , |
<"_شناسه" : "Woodcut", "شمردن" : 1> , |
<"_شناسه" : "ukiyo-e", "شمردن" : 1> , |
<"_شناسه" : "طنز", "شمردن" : 1> , |
<"_شناسه" : "کاریکاتور", "شمردن" : 1> |
] |
> |
کتاب آموزش بورس...
ما را در سایت کتاب آموزش بورس دنبال می کنید
برچسب : نویسنده : محمود استادمحمد بازدید : 55 تاريخ : يکشنبه 1 مرداد 1402 ساعت: 23:00