MongoDB operations work on only one collection. Thus, you need to structure your schema with collections that match your needs.
Option A: get identifiers from collection support, download full documents, sort in memory
Thus, you need to either collect a collection that combines the identifiers, names of the main collection and timestamps from the three collections into one collection, and asks to get your 30 IDs / collections, and then download the corresponding complete documents with 3 additional requests (1 each for each main collection) and, of course, remember that they will not return in the correct combined order, so you need to manually sort this page of results manually before returning it to your client.
{ _id: ObjectId, updated: Date, type: String }
This method allows mongo to paginate for you.
Option B: 3 Requests, Union, Sort, Limit
Or, as you said, load 30 documents from each collection, collect a set of associations in memory, omit the additional 60 and return the combined result. This avoids additional assembly costs and synchronization maintenance.
So, I think your current approach (option B, as I call it) is the smaller of the two not-so-good options.
source share