Database
db={transaction:[{/** doc 1*/_id:"doc 1 is okay",TransactionStatus:[{StatusType:2},{StatusType:1}]},{/** doc 2*/_id:"doc 2 is okay",TransactionStatus:{StatusType:[2,1]}},{/** doc 3 - this one has an issue*/_id:"doc 3 causes the error",TransactionStatus:{StatusType:1}},{/** doc 4*/_id:"doc 4 is okay but last elem != 1",TransactionStatus:{StatusType:[200,100]}}]}
Query
db.transaction.find({$expr:{$or:[{$and:[{"$eq":[{"$type":"$TransactionStatus.StatusType"},"array"]},{"$eq":[{"$arrayElemAt":["$TransactionStatus.StatusType",-1]},1]}]},{"$eq":["$TransactionStatus.StatusType",1]}]}})