Ich verwende dazu Listen. Erst lese ich alle Dokumente in die Liste ein und lösche Sie dann wieder heraus (genau wie Du mit dem Ordner). Hier ein paar praktische Befehlszeilen dazu:
Dim dokumente List As String 'Declariert die Liste
dokumente (importschluessel) = doc.UniversalID 'Nimmt eine UniversalID zu einem Importschlüssel auf
Erase dokumente (importschluessel) 'Löscht eine UniversalID aus der Liste
If Iselement (dokumente ((importschluessel)) Then ... 'Prüft das Vorhandensein eines Dokuments in der Liste anhand des Importschlüssels
Forall dokument in dokumente
x = dokument 'x enthält jetzt die UniversalID des Dokuments
x = Listtag (dokument) 'x enthält jetzt den Importschlüssel des Dokuments
End Forall
x = dokumente ("123abc") 'x enthält die UniversalID des Dokuments mit dem Importschlüssel "123abc"
Listen kennen keine logische Speicherbegrenzung, es kracht erst, wenn der Arbeitsspeicher voll ist. Man kann auch Listen von Objekten erstellen (Dim docs list As NotesDocument), und dann die Listenelemente mit Set setzen. Davon würde ich aber in Deinem Fall abraten, denn dann hast Du 120.000 Dokumente im Speicher, bei der obigen Methode mit der UniversalID nur 120.000 UniversalIDs, über die Du dann auf die Dokumente zugreifen kannst.
Funktioniert hervorragend, ist eines meiner Lieblingskonstrukte in Script. Funktioniert praktisch so wie ein Array, bei dem die Zählvariable freier Text ist. Die Schlüssel (hier der importschlüssel) müssen aber eindeutig sein.