Sync batch database with collection database

That would be my preferred option too. In particular, I would make the one that uses batch to use the more structured version of the data. Because updating the structured version is probably more efficient. The aggregation framework probably can be use to present the structured data into batch. And whatever aggregation pipeline is use to present the data in batches, you can then set a view that uses this pipeline.

If the data is in 2 places it will go out of sync and both version will probably be wrong.