I want to avoid the $unwind stages which are resource-intensive. I have tried using the updateMany statement with $arrayFilters.

But don’t succeed :frowning:

Here is a document example

{
  _id: ObjectId('66ba22ed128efe0e16f91fab'),
  markets: [
    {
      marketId: '1',
      salePeriods: [
        {
          salePeriodId: 'a',
          panel: {
            storeSegmentations: [
              {
                segmentationType: 'A',
                delete: false
              },
              {
                segmentationType: 'B',
                delete: false
              }
            ]
          }
        },
        {
          salePeriodId: 'b',
          panel: {
            storeSegmentations: [
              {
                segmentationType: 'A',
                delete: false
              },
              {
                segmentationType: 'A',
                delete: false
              },
              {
                segmentationType: 'B',
                delete: false
              }
            ]
          }
        }
      ]
    },
    {
      marketId: '2',
      salePeriods: [
        {
          salePeriodId: 'a',
          panel: {
            storeSegmentations: [
              {
                segmentationType: 'A',
                delete: false
              },
              {
                segmentationType: 'B',
                delete: false
              },
              {
                segmentationType: 'B',
                delete: false
              }
            ]
          }
        }
      ]
    }
  ]
}
db.test.updateMany(
  {},
  {
    $set: {
      "markets.$[].salePeriods.$[p].panel.storeSegmentations.$[s].delete": true
    }
  },
  {
    arrayFilters: [
      {
        "p.panel.storeSegmentations": {
          $ne: [
            {
              $size: {
                $filter: {
                  input: "$$p.panel.storeSegmentations",
                  as: "storeSegmentation",
                  cond: {
                    $eq: ["$$storeSegmentation.segmentationType", "$$s.segmentationType"]
                  }
                }
              }
            },
            1
          ]
        }
      },
      {
        "s.segmentationType": { $exists: true }
      }
    ]
  }
);