Compartir a través de


$pullAll

El $pullAll operador se usa para quitar todas las instancias de los valores especificados de una matriz. Este operador es útil cuando necesita limpiar matrices quitando varios elementos específicos en una sola operación.

Tanto $pull como $pullAll se usan para quitar elementos de una matriz, pero difieren en cómo identifican los elementos que se van a quitar. $pull quita todos los elementos de una matriz que coinciden con una condición específica, que puede ser un valor simple o una consulta más compleja (como los campos de subdocumento coincidentes). Por otro lado, $pullAll quita valores específicos proporcionados como una matriz de coincidencias exactas, pero no admite condiciones ni consultas. Básicamente, $pull es más flexible, ya que permite la eliminación condicional basada en varios criterios, mientras $pullAll que es más sencillo, trabajando solo con un conjunto fijo de valores.

Syntax

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

Parámetros

Parámetro Description
<field1> Campo donde se quitarán los valores especificados.
[ <value1>, <value2>, ... ] Matriz de valores que se van a quitar del campo especificado.

Examples

Considere este documento de ejemplo de la colección de tiendas.

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

Ejemplo 1: Quitar varios elementos de una matriz

Para quitar los descuentos de "#MembershipDeals" y "#SeasonalSale" de la matriz "tag", ejecute una consulta mediante el operador $pulAll en el campo de etiqueta con los valores que se van a quitar.

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

Esta consulta devuelve el resultado siguiente.

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