Uzasadnienie zarówno długości łańcucha, jak i terminatora zerowego jest dwojakie:zgodność z istniejącymi łańcuchami w stylu C oraz wydajność.
Aby uzyskać wydajność, MongoDB musi być w stanie szybko przejść do określonego pola w dokumencie bez iteracji przez cały BSON. Jest to ważne zwłaszcza, jeśli szukasz pola, które znajduje się blisko końca dużego (powiedzmy 16 MB) dokumentu. Gdy długość ciągu jest zakodowana jako jedna z pierwszych informacji o typie ciągu, może po prostu pominąć tę liczbę bajtów i przejść do następnego pola. W przeciwnym razie będzie musiał iterować po całym ciągu, aż znajdzie koniec ciągu.
W celu zapewnienia zgodności MongoDB jest napisany w C++, gdzie ciągi są zakończone zerem . Może odciąć ten terminator null, aby zaoszczędzić jeden bajt, ponieważ długość jest zakodowana, ale uzyskanie tego łańcucha z BSON do formatu, który można wykorzystać w C++, wymagałoby ponownego włączenia tego null. Będzie to wymagało wyspecjalizowanej procedury obsługi ciągów znaków, której jedyną zaletą jest zapisanie jednego bajtu.
Ogólnie uznano, że „marnowanie” jednego bajtu jest akceptowalnym kompromisem.