MongoDB $ pull de una matriz anidada basada en un conjunto de criterios

Bien, entonces estoy buscando actualizar todos los documentos que coincidan con la consulta a continuación:

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

La estructura de mi documento se ve así:

{
"_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"
        ]

    }
]
}

Y básicamente, lo que quiero hacer es encontrar todas las Razones (el documento raíz), que tiene uno de los valores anteriores (por ejemplo, "AH Refer") en el campo Razón de la matriz de Valores. Si tienen "Búsqueda de proveedores" en la matriz Módulos, quiero eliminar "Búsqueda de proveedores" de la matriz Módulos en ese valor en "Valores". Lo estoy pasando muy mal con este cliente. Obviamente, su estructura no es ideal (el soporte de matriz anidada no es muy bueno en Mongo), pero espero que uno de ustedes, los magos, pueda ayudarme. ¡Gracias por adelantado! :)

Respuestas a la pregunta(1)

Su respuesta a la pregunta