Durch die Verwendung einer Funktion zum Generieren der Aggregationspipeline ist es möglich, Ergebnisse basierend auf einem Array von übergebenen Aktionen zu generieren.
In meinem Testfall lief die gesamte Pipeline für eine Sammlung von 40.000 Dokumenten in weniger als 200 ms (dies war auf meinem kleinen Laptop).
Wie richtig darauf hingewiesen wurde, geht die von mir beschriebene allgemeine Lösung davon aus, dass ein Akteur zwar jede Aktion mehrmals ausführen kann, aber nur von Aktion1 zu Aktion2 vorrücken kann, aber nicht direkt von Aktion1 zu Aktion3 springen kann (wobei die Aktionsreihenfolge als Beschreibung der Voraussetzungen interpretiert wird wo Sie können Aktion3 nicht ausführen, bis Sie Aktion2 ausgeführt haben).
Wie sich herausstellt, kann das Aggregationsframework sogar für Abfolgen von Ereignissen verwendet werden, bei denen die Reihenfolge völlig willkürlich ist, Sie aber trotzdem wissen möchten, wie viele Personen irgendwann die Abfolge Aktion1, Aktion2, Aktion3 ausgeführt haben.
Die wichtigste Anpassung an der ursprünglichen Antwort besteht darin, einen zusätzlichen zweistufigen Schritt in der Mitte hinzuzufügen. Dieser Schritt wickelt das nach Personen gesammelte Dokument ab, um es neu zu gruppieren und das erste Vorkommen der zweiten Aktion zu finden, die nach kommt das erste Vorkommen der ersten Aktion.
Sobald wir das haben, wird der letzte Vergleich für Aktion1, gefolgt vom frühesten Auftreten von Aktion2, und vergleichen Sie dies mit dem letzten Auftreten von Aktion3.
Es kann wahrscheinlich verallgemeinert werden, um eine beliebige Anzahl von Ereignissen zu verarbeiten, aber jedes zusätzliche Ereignis nach zwei würde der Aggregation zwei weitere Stufen hinzufügen.
Hier ist mein Bericht von die Modifikation der Pipeline um die gesuchte Antwort zu erhalten.