Saya menulis jawaban lengkap di blog MongoDB saya tetapi sebagai rangkuman, yang harus Anda lakukan adalah memproyeksikan tindakan Anda berdasarkan tindakan mana yang Anda pedulikan untuk memetakan nilai bidang tindakan ke dalam nama kunci yang sesuai, mengelompokkan per orang yang menggabungkan tiga tindakan saat mereka melakukannya (dan opsional berapa kali ) dan kemudian memproyeksikan bidang baru yang memeriksa apakah tindakan2 dilakukan setelah tindakan1, dan tindakan3 dilakukan setelah tindakan2... Tahap terakhir hanya menjumlahkan jumlah orang yang melakukan hanya 1, atau 1 dan kemudian 2, atau 1 dan kemudian 2 dan lalu 3.
Menggunakan fungsi untuk menghasilkan alur agregasi, dimungkinkan untuk menghasilkan hasil berdasarkan serangkaian tindakan yang diteruskan.
Dalam kasus pengujian saya, seluruh pipeline berjalan di bawah 200 md untuk koleksi 40.000 dokumen (ini ada di laptop kecil saya).
Seperti yang ditunjukkan dengan benar, solusi umum yang saya uraikan mengasumsikan bahwa sementara seorang aktor dapat mengambil tindakan apa pun beberapa kali, mereka hanya dapat maju dari tindakan1 ke tindakan2 tetapi mereka tidak dapat melompat langsung dari tindakan1 ke tindakan3 (menafsirkan urutan tindakan sebagai menjelaskan prasyarat di mana Anda tidak dapat melakukan action3 sampai Anda melakukan action2).
Ternyata, kerangka kerja agregasi dapat digunakan bahkan untuk urutan peristiwa di mana urutannya benar-benar arbitrer tetapi Anda masih ingin tahu berapa banyak orang di beberapa titik yang melakukan urutan tindakan1, tindakan2, tindakan3.
Penyesuaian utama yang harus dilakukan pada jawaban asli adalah dengan menambahkan langkah dua tahap tambahan di tengah. Langkah ini membuka dokumen yang dikumpulkan oleh orang untuk mengelompokkannya kembali untuk menemukan kemunculan pertama dari tindakan kedua yang muncul setelah kemunculan pertama dari tindakan pertama.
Setelah kita mendapatkan bahwa perbandingan akhir menjadi untuk tindakan1, diikuti dengan kemunculan paling awal dari tindakan2 dan membandingkannya dengan kemunculan terbaru dari tindakan3.
Ini mungkin dapat digeneralisasi untuk menangani jumlah peristiwa yang berubah-ubah, tetapi setiap peristiwa tambahan yang melewati dua kali akan menambahkan dua tahap lagi ke agregasi.
Ini tulisan saya tentang modifikasi jalur pipa untuk mencapai jawaban yang Anda cari.