Dela via


$pull (matrisuppdatering)

Operatorn $pull används för att ta bort alla instanser av ett angivet värde eller värden som matchar ett villkor från en matris. Detta är användbart när du behöver rensa eller ändra matrisdata i dina dokument.

Syntax

{ $pull: { <field>: <value|condition> } }

Parametrar

beskrivning
<field> Fältet som du vill ta bort ett eller flera värden från.
<value|condition> Värdet eller villkoret som ska tas bort från matrisen.

Exempel

Nu ska vi förstå användningen med följande exempel-json.

{
  "_id": "7954bd5c-9ac2-4c10-bb7a-2b79bd0963c5",
   "name": "Lakeshore Retail | DJ Equipment Stop - Port Cecile",
  "location": {
    "lat": 60.1441,
    "lon": -141.5012
  },
  "staff": {
    "totalStaff": {
      "fullTime": 2,
      "partTime": 0
    }
  },
  "sales": {
    "salesByCategory": [
      {
        "categoryName": "DJ Headphones",
        "totalSales": 35921
      }
    ],
    "fullSales": 3700
  },
  "promotionEvents": [
    {
      "eventName": "Bargain Blitz Days",
      "promotionalDates": {
        "startDate": {
          "Year": 2024,
          "Month": 3,
          "Day": 11
        },
        "endDate": {
          "Year": 2024,
          "Month": 2,
          "Day": 18
        }
      },
      "discounts": [
        {
          "categoryName": "DJ Turntables",
          "discountPercentage": 18
        },
        {
          "categoryName": "DJ Mixers",
          "discountPercentage": 15
        }
      ]
    }
  ],
  "tag": [
    "#ShopLocal",
    "#SeasonalSale",
    "#FreeShipping",
    "#MembershipDeals"
  ]
}

Exempel 1: Ta bort en specifik tagg från matrisen tag

db.stores.update(
  { _id: "7954bd5c-9ac2-4c10-bb7a-2b79bd0963c5" },
  { $pull: { tag: "#SeasonalSale" } }
)

Den här frågan returnerar följande dokument.

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

Exempel 2: Ta bort alla händelser från matrisen promotionEvents som slutar före ett visst datum

db.stores.update(
  { _id: "7954bd5c-9ac2-4c10-bb7a-2b79bd0963c5" },
  { $pull: { promotionEvents: { "promotionalDates.endDate.Year": 2024, "promotionalDates.endDate.Month": { $lt: 3 } } } }
)

Den här frågan returnerar följande dokument.

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

Begränsningar

Ta bort om det inte finns några begränsningar/avvikelser från Mongo-standardkommandot, annars uppdateras du efter behov.