We have a similar setup for what you mention, using ASP.Net MVC with ElasticSearch (SQL server for relational data, periodically updating ES), data aggregation (XML / JSON) from several sources, although in order to improve the search and filter the results instead of reporting. However, I expect that the script you are looking at will also be suitable for ElasticSearch, depending on your specific requirements.
1) Since you are already using SQL Server (and, I believe, are familiar with this), I would suggest combining this with ElasticSearch - an additional mongodb layer seems unnecessary in terms of supporting another technology and development, so that it matches this integration, There is a very A good C # library (actually ElasticSearch.Net and NEST used together) that provides most of the ES functionality.
2) We have chosen ElasticSearch for its scalability combined with flexibility and ease of use. You may encounter a problem with displaying documents from C # classes to ElasticSearch documents. In essence, this is incredibly easy to set up, however you need to do some planning to index the data the way you want to search and retrieve it. Therefore, if you choose ES as a platform, spend some time on the document structure - dynamic mapping enabled by default, so you can pretty much throw any JSON into the document. However, for a production environment, it is best to disable this and establish one or more mappings so that they can be requested in a standard way.
3) Performance is also a key factor for us, so we looked at Lucene engines, such as Solr and ElasticSearch, when conducting research, as well as NoSQL databases. In most scenarios, ElasticSearch outperforms SQL Server by 10 or 1 or higher. Efficiency Solr vs. ElasticSearch depends on the script, benchmarks, and comparisons if you google them. An exception may be if many documents must be received in one request - ES (or Lucene) is not created for this use case, it is best to quickly find fewer results (similar to the number of results per page on page) per page. If you need 1000 documents per page / result, a NoSQL database might be the best option.
ElasticSearch gets up and running quickly - install it in the local development block and try it, you will feel whether it suits.
Calle
source share