Mongodb as a data ware house?
(Speaking from a MySQL perspective...)

10M rows is not that big -- perhaps only 1GB?  It is hardly a candidate for sharding unless the system activity is really high.

2M rows/year = 25/second.  100/second is where I perk up an eyebrow and suggest looking more closely.  1K/sec is likely to need some special treatment.

ALTER TABLE .. ADD COLUMN .. -- There are techinques that make that not too bad.  And with MySQL 8.0, there is a truely painless ADD COLUMN.

Consider having JSON column for "miscellany" that gets added later; do not add more columns unless you need the database engine to filter on them or sort on them.

For analytics, build and maintain Summary Tables.  These make "report writing" 10x faster than scanning through 10M rows.

CTE and Windowing functions exist in MySQL 8.0 and MariaDB 10.2.  But you may not need such.

5K Writes/day -- In addition to the 2M inserts/year?  Not a big deal.