How do I migrate data from a SQL Server DB to MongoDB?
Joins you either pre-compute and store the denormalised data in the document. Or the application implements a join algorithm for runtime.

Indexes can be defined for whichever values inside the documents you'd like to have them. The documentation adequately  describes the options. As currently, they help reads but have a write overhead.

Keys: there are no keys. Each row has a unique identifier which you can assign or let the system generate a value. This would correspond to a surrogate primary key. Foreign keys, uniqueness, check constraints, assertions etc. are the appapplication's responsibility.