MongoDB uses B-trees to represent indexes internally and recommends indexing keys that are frequently used in WHERE clauses, such as unique user names. Indexes can be single or multi-key and are created using the ensureIndex method. While indexes improve query performance, over-indexing can reduce performance of insert, update and delete operations. It is important to consider the tradeoff between faster queries and slower write operations when choosing indexes.