Requirement is to identify transactions with the {"Type": "Retail", "ArchivalStatus": {"$exists": false}, "CreatedDate": ISO Date } and update a new field → {"ArchivalStatus": "COMPLETED"} .
Below is the sample structure.
Because the documentation says that $exists:true is allowed. If $exists:false would be allow the documentation will have mentioned. There might be a technical reason why it cannot be supported. One thing about partial index is that the query must specify the fields used in the expression. This makes me think how would you specify a query that specify a field that does not exists.
You probably could reverse your logic and have start with enrichmentstatus:null rather than non existing status and have your partial index expression to be enrichmentstatus:null.
By top-level only, I could only assume that $and has to come first. But since the operators $not and $or are not allowed, you could probably re-write any expression with $and somewhere else as an $and at the top level.