Lý do cho cả độ dài của chuỗi và dấu chấm hết null đều gấp đôi:khả năng tương thích với các chuỗi kiểu C hiện có và hiệu suất.
Để có hiệu suất, MongoDB cần có thể nhanh chóng chuyển đến một trường cụ thể trong tài liệu mà không cần lặp lại toàn bộ BSON. Điều này đặc biệt quan trọng nếu bạn đang tìm kiếm một trường gần cuối tài liệu lớn (ví dụ 16 MB). Với độ dài của chuỗi được mã hóa là một trong những thông tin đầu tiên về loại chuỗi, nó có thể bỏ qua số byte đó và chuyển đến trường tiếp theo. Nếu không, nó sẽ cần phải lặp lại toàn bộ chuỗi cho đến khi nó tìm thấy phần cuối của chuỗi.
Để tương thích, MongoDB được viết bằng C ++, trong đó chuỗi chấm dứt rỗng . Nó có thể cắt bỏ dấu chấm dứt null đó để tiết kiệm một byte vì độ dài được mã hóa, nhưng việc lấy chuỗi đó ra khỏi BSON thành một định dạng có thể sử dụng được bởi C ++ sẽ yêu cầu nhập lại giá trị null đó. Điều này sẽ cần quy trình xử lý chuỗi chuyên biệt, lợi thế duy nhất là tiết kiệm một byte duy nhất.
Nhìn chung, người ta quyết định rằng "lãng phí" một byte đơn lẻ là một sự đánh đổi có thể chấp nhận được.