Según la especificación BSON, se utiliza un int32_t para el número total de bytes que comprende el documento.
También puedo ver que mongo-c-driver está usando Libbson y está usando int32_t.
Pero, ¿cuál es la razón para usar enteros con signo en lugar de enteros sin signo?
el tamaño del documento nunca será inferior a 0. ¿Puede alguien explicar el motivo?
El tamaño del documento está limitado a 16 MB, lo que cabe en un número entero de 32 bits con signo con espacio de sobra.
Si bien se consideraron límites de tamaño de documento superiores a 16 MB, supongo que no hubo una consideración seria de los tamaños de documento que superan los 2 GB, por lo tanto, la diferencia en el rango que se obtiene al usar enteros de 32 bits sin signo para la longitud no fue un beneficio significativo.
Por lo tanto, no hay motivo para utilizar un tipo sin firmar.
Razones para NO usar un tipo sin firmar: