Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der $setIntersection Operator gibt ein Array zurück, das Elemente enthält, die in allen Eingabearrays angezeigt werden. Es behandelt Arrays als Mengen, was bedeutet, dass es Duplikate entfernt und die Reihenfolge der Elemente ignoriert.
Syntax
{
$setIntersection: [ <array1>, <array2>, ... ]
}
Die Parameter
| Parameter | Description |
|---|---|
<array1>, <array2>, ... |
Zwei oder mehr Arrays, um die Schnittmenge zu finden. Jedes Array wird als Satz behandelt. |
Examples
Betrachten Sie dieses Beispieldokument aus der Stores-Sammlung.
{
"_id": "40d6f4d7-50cd-4929-9a07-0a7a133c2e74",
"name": "Proseware, Inc. | Home Entertainment Hub - East Linwoodbury",
"location": {
"lat": 70.1272,
"lon": 69.7296
},
"staff": {
"totalStaff": {
"fullTime": 19,
"partTime": 20
}
},
"sales": {
"totalSales": 151864,
"salesByCategory": [
{
"categoryName": "Sound Bars",
"totalSales": 2120
},
{
"categoryName": "Home Theater Projectors",
"totalSales": 45004
},
{
"categoryName": "Game Controllers",
"totalSales": 43522
},
{
"categoryName": "Remote Controls",
"totalSales": 28946
},
{
"categoryName": "VR Games",
"totalSales": 32272
}
]
},
"promotionEvents": [
{
"eventName": "Massive Markdown Mania",
"promotionalDates": {
"startDate": {
"Year": 2023,
"Month": 6,
"Day": 29
},
"endDate": {
"Year": 2023,
"Month": 7,
"Day": 9
}
},
"discounts": [
{
"categoryName": "DVD Players",
"discountPercentage": 14
},
{
"categoryName": "Projector Lamps",
"discountPercentage": 6
},
{
"categoryName": "Media Players",
"discountPercentage": 21
},
{
"categoryName": "Blu-ray Players",
"discountPercentage": 21
},
{
"categoryName": "Home Theater Systems",
"discountPercentage": 5
},
{
"categoryName": "Televisions",
"discountPercentage": 22
}
]
},
{
"eventName": "Discount Delight Days",
"promotionalDates": {
"startDate": {
"Year": 2023,
"Month": 12,
"Day": 26
},
"endDate": {
"Year": 2024,
"Month": 1,
"Day": 5
}
},
"discounts": [
{
"categoryName": "Game Controllers",
"discountPercentage": 22
},
{
"categoryName": "Home Theater Projectors",
"discountPercentage": 23
},
{
"categoryName": "Sound Bars",
"discountPercentage": 10
},
{
"categoryName": "Media Players",
"discountPercentage": 10
},
{
"categoryName": "Televisions",
"discountPercentage": 9
},
{
"categoryName": "Projector Lamps",
"discountPercentage": 24
}
]
}
]
}
Beispiel 1: Suchen allgemeiner Kategorien zwischen Verkäufen und Werbeaktionen
Diese Abfrage bestimmt, welche Produktkategorien in den Verkaufsdaten und Rabatten eines Stores angezeigt werden.
db.stores.aggregate([
{ $match: {"_id": "40d6f4d7-50cd-4929-9a07-0a7a133c2e74"} },
{
$project: {
name: 1,
salesCategories: "$sales.salesByCategory.categoryName",
firstPromotionCategories: { $arrayElemAt: ["$promotionEvents.discounts.categoryName", 0] },
secondPromotionCategories: { $arrayElemAt: ["$promotionEvents.discounts.categoryName", 1] },
commonSalesAndFirstPromotion: {
$setIntersection: [
"$sales.salesByCategory.categoryName",
{ $arrayElemAt: ["$promotionEvents.discounts.categoryName", 0] }
]
},
commonSalesAndSecondPromotion: {
$setIntersection: [
"$sales.salesByCategory.categoryName",
{ $arrayElemAt: ["$promotionEvents.discounts.categoryName", 1] }
]
}
}
}
])
Diese Abfrage gibt das folgende Ergebnis zurück.
[
{
"_id": "40d6f4d7-50cd-4929-9a07-0a7a133c2e74",
"name": "Proseware, Inc. | Home Entertainment Hub - East Linwoodbury",
"salesCategories": [
"Sound Bars",
"Game Controllers",
"Remote Controls",
"VR Games"
],
"firstPromotionCategories": [
"DVD Players",
"Projector Lamps",
"Media Players",
"Blu-ray Players",
"Home Theater Systems",
"Televisions"
],
"secondPromotionCategories": [
"TV Mounts",
"Game Accessories",
"Portable Projectors",
"Projector Screens",
"Blu-ray Players",
"DVD Players"
],
"commonSalesAndFirstPromotion": [],
"commonSalesAndSecondPromotion": []
}
]
Beispiel 2: Suchen allgemeiner Kategorien für mehrere Werbeaktionsereignisse
Diese Abfrage ruft Kategorien ab, die in mehreren Heraufgestufungsereignissen angezeigt werden.
db.stores.aggregate([
{ $match: {"_id": "40d6f4d7-50cd-4929-9a07-0a7a133c2e74"} },
{
$project: {
name: 1,
commonAcrossPromotions: {
$setIntersection: [
{ $arrayElemAt: ["$promotionEvents.discounts.categoryName", 0] },
{ $arrayElemAt: ["$promotionEvents.discounts.categoryName", 1] },
{ $arrayElemAt: ["$promotionEvents.discounts.categoryName", 2] }
]
}
}
}
])
Diese Abfrage gibt das folgende Ergebnis zurück.
[
{
"_id": "40d6f4d7-50cd-4929-9a07-0a7a133c2e74",
"name": "Proseware, Inc. | Home Entertainment Hub - East Linwoodbury",
"commonAcrossPromotions": []
}
]