Partager via


$pullAll

L’opérateur $pullAll est utilisé pour supprimer toutes les instances des valeurs spécifiées d’un tableau. Cet opérateur est utile lorsque vous devez nettoyer des tableaux en supprimant plusieurs éléments spécifiques dans une seule opération.

Les deux $pull et $pullAll sont utilisés pour supprimer des éléments d’un tableau, mais ils diffèrent dans la façon dont ils identifient les éléments à supprimer. $pull supprime tous les éléments d’un tableau qui correspondent à une condition spécifique, qui peut être une valeur simple ou une requête plus complexe (comme la correspondance de champs de sous-document). En revanche, $pullAll supprime des valeurs spécifiques fournies sous la forme d’un tableau de correspondances exactes, mais elle ne prend pas en charge les conditions ou les requêtes. Essentiellement, $pull est plus flexible, car il autorise la suppression conditionnelle en fonction de différents critères, tout en étant plus simple, en $pullAll travaillant uniquement avec un ensemble fixe de valeurs.

Syntaxe

{
  $pullAll: { <field1>: [ <value1>, <value2>] }
}

Paramètres

Paramètre Descriptif
<field1> Champ dans lequel les valeurs spécifiées seront supprimées.
[ <value1>, <value2>, ... ] Tableau de valeurs à supprimer du champ spécifié.

Examples

Considérez cet exemple de document de la collection des magasins.

{
    "_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
                }
            ]
        }
    ]
}

Exemple 1 : Supprimer plusieurs éléments d’un tableau

Pour supprimer les remises pour « #MembershipDeals » et « #SeasonalSale » du tableau « tag », exécutez une requête à l’aide de l’opérateur $pulAll sur le champ de balise avec les valeurs à supprimer.

db.stores.updateMany(
    //filter
    { _id: "7954bd5c-9ac2-4c10-bb7a-2b79bd0963c5"},
    {
      $pullAll: {
        tag: ["#MembershipDeals","#SeasonalSale" ]
      }
    }
)

Cette requête retourne le résultat suivant.

[
  {
    "acknowledged": true,
    "insertedId": null,
    "matchedCount": 1,
    "modifiedCount": 1,
    "upsertedCount": 0
  }
]