Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L’opérateur $setUnion retourne un tableau qui contient tous les éléments uniques des tableaux d’entrée. Il traite les tableaux comme des ensembles, supprime les doublons et ignore l’ordre des éléments. Le résultat contient chaque élément unique une seule fois, quel que soit le nombre de fois qu’il apparaît dans les tableaux d’entrée.
Syntaxe
{
$setUnion: [ <array1>, <array2>, ... ]
}
Paramètres
| Paramètre | Descriptif |
|---|---|
<array1>, <array2>, ... |
Deux tableaux ou plus à combiner. Chaque tableau est traité comme un ensemble et les doublons sont supprimés du résultat final. |
Examples
Considérez cet exemple de document de la collection des magasins.
{
"_id": "26afb024-53c7-4e94-988c-5eede72277d5",
"name": "First Up Consultants | Microphone Bazaar - South Lexusland",
"location": {
"lat": -29.1866,
"lon": -112.7858
},
"staff": {
"totalStaff": {
"fullTime": 14,
"partTime": 8
}
},
"sales": {
"totalSales": 83865,
"salesByCategory": [
{
"categoryName": "Lavalier Microphones",
"totalSales": 44174
},
{
"categoryName": "Wireless Microphones",
"totalSales": 39691
}
]
},
"promotionEvents": [
{
"eventName": "Price Cut Spectacular",
"promotionalDates": {
"startDate": {
"Year": 2023,
"Month": 12,
"Day": 26
},
"endDate": {
"Year": 2024,
"Month": 1,
"Day": 5
}
},
"discounts": [
{
"categoryName": "Condenser Microphones",
"discountPercentage": 5
},
{
"categoryName": "Dynamic Microphones",
"discountPercentage": 14
}
]
},
{
"eventName": "Bargain Bonanza",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 3,
"Day": 25
},
"endDate": {
"Year": 2024,
"Month": 4,
"Day": 3
}
},
"discounts": [
{
"categoryName": "Streaming Microphones",
"discountPercentage": 14
},
{
"categoryName": "Microphone Stands",
"discountPercentage": 14
}
]
},
{
"eventName": "Super Savings Extravaganza",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 6,
"Day": 23
},
"endDate": {
"Year": 2024,
"Month": 6,
"Day": 30
}
},
"discounts": [
{
"categoryName": "Condenser Microphones",
"discountPercentage": 7
},
{
"categoryName": "Microphone Stands",
"discountPercentage": 5
}
]
}
]
}
Exemple 1 : Combiner toutes les catégories de produits
Cette requête récupère une liste de toutes les catégories de produits uniques d’un magasin. La liste comprend les catégories de ventes et de promotion.
db.stores.aggregate([
{ $match: {"_id": "26afb024-53c7-4e94-988c-5eede72277d5"} },
{
$project: {
name: 1,
salesCategories: "$sales.salesByCategory.categoryName",
firstPromotionCategories: { $arrayElemAt: ["$promotionEvents.discounts.categoryName", 0] },
secondPromotionCategories: { $arrayElemAt: ["$promotionEvents.discounts.categoryName", 1] },
thirdPromotionCategories: { $arrayElemAt: ["$promotionEvents.discounts.categoryName", 2] },
allUniqueCategories: {
$setUnion: [
"$sales.salesByCategory.categoryName",
{ $arrayElemAt: ["$promotionEvents.discounts.categoryName", 0] },
{ $arrayElemAt: ["$promotionEvents.discounts.categoryName", 1] },
{ $arrayElemAt: ["$promotionEvents.discounts.categoryName", 2] }
]
}
}
}
])
Cette requête retourne le résultat suivant.
[
{
"_id": "26afb024-53c7-4e94-988c-5eede72277d5",
"name": "First Up Consultants | Microphone Bazaar - South Lexusland",
"salesCategories": [
"Lavalier Microphones",
"Wireless Microphones"
],
"firstPromotionCategories": [
"Condenser Microphones",
"Dynamic Microphones"
],
"secondPromotionCategories": [
"Streaming Microphones",
"Microphone Stands"
],
"thirdPromotionCategories": [
"Condenser Microphones",
"Microphone Stands"
],
"allUniqueCategories": [
"Lavalier Microphones",
"Wireless Microphones",
"Condenser Microphones",
"Dynamic Microphones",
"Streaming Microphones",
"Microphone Stands"
]
}
]
Contenu connexe
- Passez en revue les options de migration de MongoDB vers Azure Cosmos DB pour MongoDB (vCore).
- En savoir plus sur la compatibilité des fonctionnalités avec MongoDB.