MongoDB $ aus verschachteltem Array basierend auf einer Reihe von Kriterien ziehen

Okay, ich möchte also alle Dokumente aktualisieren, die der folgenden Abfrage entsprechen:

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

Meine Dokumentstruktur sieht folgendermaßen aus:

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

    }
]
}

Und im Grunde möchte ich alle Gründe (das Stammdokument) finden, die einen der oben genannten Werte (z. B. "AH Refer") im Feld "Grund" des Arrays "Werte" aufweisen. Wenn das Modularray "Anbietersuche" enthält, möchte ich "Anbietersuche" für diesen Wert in "Werte" aus dem Modularray entfernen. Ich habe es wirklich schwer für diesen Kunden. Offensichtlich ist ihre Struktur nicht ideal (Unterstützung für verschachtelte Arrays ist in Mongo nicht sehr gut), aber ich hoffe, einer von Ihnen kann mir helfen. Danke im Voraus! :)