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 $setEquals Operator gibt zurück true , wenn zwei Sätze unabhängig von Der Reihenfolge oder Duplikaten dieselben unterschiedlichen Elemente aufweisen. Es behandelt Arrays als Sätze und ignoriert doppelte Werte und Elementreihenfolge.
Syntax
{
$setEquals: [ <array1>, <array2>, ... ]
}
Die Parameter
| Parameter | Description |
|---|---|
array1, array2, ... |
Arrays, die für Gleichheit verglichen werden sollen. Sie können zwei oder mehr Arrays angeben. |
Examples
Betrachten Sie dieses Beispieldokument aus der Stores-Sammlung.
{
"_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
}
]
}
]
}
Beispiel 1: Vergleichen von Rabattkategorien zwischen Ereignissen
Diese Abfrage bestimmt, ob zwei Werbeaktionsereignisse Rabatte für die gleichen Kategorien bieten.
db.stores.aggregate([
{ $match: {"_id": "26afb024-53c7-4e94-988c-5eede72277d5"} },
{
$project: {
name: 1,
event1Categories: { $arrayElemAt: ["$promotionEvents.discounts.categoryName", 0] },
event2Categories: { $arrayElemAt: ["$promotionEvents.discounts.categoryName", 1] },
sameDiscountCategories: {
$setEquals: [
{ $arrayElemAt: ["$promotionEvents.discounts.categoryName", 0] },
{ $arrayElemAt: ["$promotionEvents.discounts.categoryName", 1] }
]
}
}
}
])
Diese Abfrage gibt das folgende Ergebnis zurück.
[
{
"_id": "26afb024-53c7-4e94-988c-5eede72277d5",
"name": "First Up Consultants | Microphone Bazaar - South Lexusland",
"event1Categories": [
"Condenser Microphones",
"Dynamic Microphones"
],
"event2Categories": [
"Streaming Microphones",
"Microphone Stands"
],
"sameDiscountCategories": false
}
]
Beispiel 2: Vergleichen der Mitarbeiteranforderungen
Diese Abfrage bestimmt, ob zwei Speicher die gleichen Personalstrukturanforderungen aufweisen.
db.stores.aggregate([
{ $match: {"_id": { $in: ["26afb024-53c7-4e94-988c-5eede72277d5", "f2a8c190-28e4-4e14-9d8b-0256e53dca66"] }} },
{
$group: {
_id: null,
stores: { $push: { _id: "$_id", name: "$name" }}
}
},
{
$project: {
store1: { $arrayElemAt: ["$stores", 0] },
store2: { $arrayElemAt: ["$stores", 1] },
staffTypes1: ["fullTime", "partTime"],
staffTypes2: ["fullTime", "partTime"],
sameStaffStructure: {
$setEquals: [
["fullTime", "partTime"],
["fullTime", "partTime"]
]
}
}
}
])
Diese Abfrage gibt das folgende Ergebnis zurück.
[
{
"_id": null,
"store1": {
"_id": "26afb024-53c7-4e94-988c-5eede72277d5",
"name": "First Up Consultants | Microphone Bazaar - South Lexusland"
},
"store2": {
"_id": "f2a8c190-28e4-4e14-9d8b-0256e53dca66",
"name": "Fabrikam, Inc. | Car Accessory Outlet - West Adele"
},
"staffTypes1": ["fullTime", "partTime"],
"staffTypes2": ["fullTime", "partTime"],
"sameStaffStructure": true
}
]
Beispiel 3: Vergleichen von Sätzen mit Duplikaten
Diese Abfrage verwendet den $setEquals Operator, um Duplikate und Reihenfolge zu ignorieren.
db.stores.aggregate([
{ $match: {"_id": "26afb024-53c7-4e94-988c-5eede72277d5"} },
{
$project: {
name: 1,
array1: ["Microphones", "Stands", "Microphones", "Accessories"],
array2: ["Stands", "Accessories", "Microphones"],
arraysEqual: {
$setEquals: [
["Microphones", "Stands", "Microphones", "Accessories"],
["Stands", "Accessories", "Microphones"]
]
}
}
}
])
Diese Abfrage gibt das folgende Ergebnis zurück.
[
{
"_id": "26afb024-53c7-4e94-988c-5eede72277d5",
"name": "First Up Consultants | Microphone Bazaar - South Lexusland",
"array1": ["Microphones", "Stands", "Microphones", "Accessories"],
"array2": ["Stands", "Accessories", "Microphones"],
"arraysEqual": true
}
]