Wenn du den Agenten mehrfach über die Dokumente laufen lässt, hast du wohl keine Chance mehr das festzustellen.
Bei einmaligem Durchlauf hast du die Chance zu prüfen, ob der "neue" Wert dem alten entspricht. Ist dies der Fall, muss ein neuer Wert zufällig ermittelt werden.
Der Weg mit der Collection ist schonmal sinnvoll. Vielleicht solltes du beim Vertauschen Dokumente direkt in eine neue Datenbank kopieren. Dann kannst du mit zwei Collections arbeiten: Eine Collection ist zu drüber iterieren und aus der anderen holst du dir willkürlich ein Dokument, mit dem das aktuelle Dokument aus der Iterier-Collection verwirrt wird... So würde ich das wahrscheinlich machen. Und wenn du deinen Ansatz weiter so generisch verfolgst, kannst du das sogar für beliebige Datenbanken anwenden.
Geschickt wäre es, wenn du anhand des Maskennamens die möglichen Felder bestimmst und auch nur die zur Auswahl anbietest.