Pull MongoDB $ da matriz aninhada com base em um conjunto de critérios

Ok, estou procurando atualizar todos os documentos correspondentes à consulta abaixo:

var searchArray = ["AH Refer"
];
db.ReasonTest.find({ 
$and: [
    {
        "Values.Reason": {
            $in: searchArray
        }
    },
    {
        "Values.Modules": {
            $all: ["Provider Search"]
        }
    }
]
});

Minha estrutura de documentos é assim:

{
"_id" : ObjectId("537398e92db5868b145f5f29"),
"ID" : NumberLong(1),
"Name" : "MCC",
"Values" : [ 
    {
        "ID" : NumberLong(1016),
        "Reason" : "COB",
        "Modules" : [ 
            "SRA"
        ]
    }, 
    {
        "ID" : NumberLong(104),
        "Reason" : "AH Refer",
        "Modules" : [ 
            "Provider Search"
        ]

    }
]
}

E basicamente, o que eu quero fazer é encontrar todos os motivos (o documento raiz), que possui um dos valores acima (por exemplo, "AH Refer") no campo Motivo da matriz Valores. Se eles tiverem "Pesquisa de Provedor" na matriz de Módulos, desejo remover "Pesquisa de Provedor" da matriz de Módulos nesse valor em "Valores". Estou tendo um momento muito difícil com esse cliente. Obviamente, a estrutura deles não é ideal (o suporte a matrizes aninhadas não é muito bom no Mongo), mas espero que um de vocês wizkids possa me ajudar. Desde já, obrigado! :)