WiredTiger, MongoDB 1,815 's default storage engine since 3.2, stores a collection as one B+ tree keyed by an internal 64-bit RecordId, and each index as a separate B+ tree of its own. Index keys are the indexed values in a byte-comparable encoding called KeyString, with the RecordId appended so duplicates stay distinct and ordered. Leaf pages carry keys, never documents — hence an index far smaller than the collection.

Three consequences follow. Reads are cheap, writes are not: a lookup walks a handful of pages, but every insert adds a key to every index, and the fourteen indexes this section builds total 16.0 MB against 33 MB of data. Keys and documents compress differently: prefix compression is on for every index, so email_1 over 19,868 distinct addresses takes 905,216 bytes, under half the 2,144,396 those strings occupy in the documents; collection pages use Snappy block compression. Everything competes for one cache, sized at the larger of 256 MB and 50% of (RAM − 1 GB) — here 68,012,736,512 bytes, shared by index and document pages alike. An index nobody queries still consumes cache on every write that touches it: the case against keeping indexes "just in case".