As you have discovered, GetStreamsToSnapshot gives you a list of threads that have at least X changes behind the head version.
From there, it is a matter of loading each thread. Here you can add some header information to the stream to determine what type of population you have in mind.
Many times they ask me why I do not just store information about summary types directly in EventStore and make it a first-class part of the API. The answer is that it does not care about aggregates, which are the concept of DDD. All EventStore take care of streams and events.
source share