Mongo - findAndModify has to be executed twice to take effect
Find the doc..

The 'findAndModify' command modifies and returns a single document. By default, the returned document does not include the modifications made on the update. To return the document with the modifications made on the update, use the new option.

About new:

Optional. When true, returns the modified document rather than the original. The findAndModify method ignores the new option for remove operations. The default is false. |

https://docs.mongodb.com/manual/reference/command/findAndModify/
So I should have done:
db.campaign.findAndModify({
    query: {
        code: &quot;CK&quot;, 'siteCampaigns.siteCode': &quot;IT&quot;
    }, 
    update: {
        &quot;$set&quot;: {
            'siteCampaigns.$.endDate': ISODate(&quot;2020-08-30T00:00:00Z&quot;)
        }
    }, 
    upsert:false,
    new: true
})