What I have understood is the best way to look at it is, to create one view per document type and use setDocumentType property of that view. Hence the mapper will be called only when that type of document is synced to fill the view/index.
Secondly try to avoid writing views which will emit keys based on 2 different document types. Instead create 2 views.
Also when emitting a key if you need to access other document then try to denormalise data or duplicate some data. Because you never know which document is going to be synced first if not simulating priority by using filtered replication.
Keys are more like combination of columns used in where clause and order by of SQL. and values are your select. Do think like you cant have joins and based on that design your document structure.