إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
$facet تسمح مسارات تجميع المرحلة بتنفيذ تجميعات متوازية متعددة ضمن مرحلة مسار واحدة. من المفيد إجراء تحليلات متعددة على نفس مجموعة البيانات في استعلام واحد.
إعراب
{
"$facet": {
"outputField1": [ { "stage1": {} }, { "stage2": {} } ],
"outputField2": [ { "stage1": {} }, { "stage2": {} } ]
}
}
Parameters
| المعلمة | Description |
|---|---|
outputFieldN |
اسم حقل الإخراج. |
stageN |
مرحلة التجميع التي سيتم تنفيذها. |
أمثلة
ضع في اعتبارك نموذج المستند هذا من مجموعة المتاجر.
{
"_id": "0fcc0bf0-ed18-4ab8-b558-9848e18058f4",
"name": "First Up Consultants | Beverage Shop - Satterfieldmouth",
"location": {
"lat": -89.2384,
"lon": -46.4012
},
"staff": {
"totalStaff": {
"fullTime": 8,
"partTime": 20
}
},
"sales": {
"totalSales": 75670,
"salesByCategory": [
{
"categoryName": "Wine Accessories",
"totalSales": 34440
},
{
"categoryName": "Bitters",
"totalSales": 39496
},
{
"categoryName": "Rum",
"totalSales": 1734
}
]
},
"promotionEvents": [
{
"eventName": "Unbeatable Bargain Bash",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 6,
"Day": 23
},
"endDate": {
"Year": 2024,
"Month": 7,
"Day": 2
}
},
"discounts": [
{
"categoryName": "Whiskey",
"discountPercentage": 7
},
{
"categoryName": "Bitters",
"discountPercentage": 15
},
{
"categoryName": "Brandy",
"discountPercentage": 8
},
{
"categoryName": "Sports Drinks",
"discountPercentage": 22
},
{
"categoryName": "Vodka",
"discountPercentage": 19
}
]
},
{
"eventName": "Steal of a Deal Days",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 9,
"Day": 21
},
"endDate": {
"Year": 2024,
"Month": 9,
"Day": 29
}
},
"discounts": [
{
"categoryName": "Organic Wine",
"discountPercentage": 19
},
{
"categoryName": "White Wine",
"discountPercentage": 20
},
{
"categoryName": "Sparkling Wine",
"discountPercentage": 19
},
{
"categoryName": "Whiskey",
"discountPercentage": 17
},
{
"categoryName": "Vodka",
"discountPercentage": 23
}
]
}
]
}
مثال 1: بحث عن المبيعات والعروض الترويجية
لإجراء تحليلات متزامنة حول المبيعات والعروض الترويجية، لفئات المنتجات المحددة. تقوم البنية salesAnalysis الأساسية لبرنامج ربط العمليات التجارية بفك salesByCategory، وعوامل التصفية لفئات معينة، وتجمعها لجمع totalSales. يفك مسار تحليل الترقية الأحداث الترويجية وخصوماتها، وعوامل التصفية لفئات معينة مثل Laptops، Smartphones وما إلى ذلك، ويجموعها لحساب متوسط النسبة المئوية للخصم. يتم جلب مستندات الإدخال من stores المجموعة من قاعدة البيانات مرة واحدة فقط، في بداية هذه العملية.
db.stores.aggregate([
{
$facet: {
salesAnalysis: [
{ $unwind: "$sales.salesByCategory" },
{ $match: { "sales.salesByCategory.categoryName": { $in: ["Laptops", "Smartphones", "Cameras", "Watches"] } } },
{ $group: { _id: "$sales.salesByCategory.categoryName", totalSales: { $sum: "$sales.salesByCategory.totalSales" } } }
],
promotionAnalysis: [
{ $unwind: "$promotionEvents" },
{ $unwind: "$promotionEvents.discounts" },
{ $match: { "promotionEvents.discounts.categoryName": { $in: ["Laptops", "Smartphones", "Cameras", "Watches"] } } },
{ $group: { _id: "$promotionEvents.discounts.categoryName", avgDiscount: { $avg: "$promotionEvents.discounts.discountPercentage" } } }
]
}
}
]).pretty()
يقوم هذا الاستعلام بإرجاع النتيجة التالية:
[
{
"salesAnalysis": [
{ "_id": "Smartphones", "totalSales": 440815 },
{ "_id": "Laptops", "totalSales": 679453 },
{ "_id": "Cameras", "totalSales": 481171 },
{ "_id": "Watches", "totalSales": 492299 }
],
"promotionAnalysis": [
{ "_id": "Smartphones", "avgDiscount": 14.32 },
{ "_id": "Laptops", "avgDiscount": 14.780645161290323 },
{ "_id": "Cameras", "avgDiscount": 15.512195121951219 },
{ "_id": "Watches", "avgDiscount": 15.174418604651162 }
]
}
]
محتوى ذو صلة
- راجع خيارات الترحيل من MongoDB إلى Azure DocumentDB.
- اقرأ المزيد حول توافق الميزات مع MongoDB.