Důvod pro délku řetězce a nulového terminátoru je dvojí:kompatibilita se stávajícími řetězci ve stylu C a výkon.
Pro výkon musí být MongoDB schopen rychle přejít na konkrétní pole v dokumentu bez iterace přes celý BSON. To je důležité zejména v případě, že hledáte pole, které se blíží konci velkého (řekněme 16 MB) dokumentu. S délkou řetězce zakódovanou jako jedna z prvních informací o typu řetězce může tento počet bajtů jednoduše přeskočit a přejít na další pole. Jinak bude muset iterovat celý řetězec, dokud nenajde konec řetězce.
Kvůli kompatibilitě je MongoDB napsán v C++, kde jsou řetězce ukončeny nulou . Může odříznout tento nulový terminátor, aby se ušetřil jeden bajt, protože délka je zakódována, ale dostat tento řetězec z BSON do formátu použitelného v C++ by vyžadovalo znovu přichycení tohoto null. To bude vyžadovat specializovanou rutinu pro zpracování řetězců, jejíž jedinou výhodou je úspora jednoho bajtu.
Celkově bylo rozhodnuto, že „plýtvání“ jedním byte je přijatelným kompromisem.